今天早些时候,这曾经起作用(或看起来是),但我最近重新启动了服务器,现在 Apache 似乎没有确认我的端口 80 vhost。
我的网站由 /var/www/example.com/public_html 和端口 80 提供服务应该重定向到 HTTPS。在我的服务器重启之前,这是可以正常工作的;现在它不再重定向,而是提供 /var/www/html 中的默认内容。
我不确定服务器重启后是否需要启动某些进程或服务?站点已启用,端口 443 虚拟主机正常运行。Apache 版本为 2.4.27,操作系统为 Ubuntu 17.10。这是我的配置文件,位于 /etc/apache2/sites-available/example.com.conf。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
</VirtualHost>
<VirtualHost *:443>
SSLEngine On
SSLCertificateKeyFile /etc/ssl/private/example_com.key
SSLCertificateFile /etc/ssl/certs/example_com.crt
SSLCertificateChainFile /etc/ssl/certs/example_com.ca-bundle
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ProxyPreserveHost On
ProxyPass /api http://localhost:1337/api
ProxyPassReverse /api http://localhost:1337/api
<directory /var/www/example.com/public_html/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.html [L]
</IfModule>
</directory>
</VirtualHost>
答案1
您的配置中是否有以下内容?
NameVirtualHost *:80
NameVirtualHost *:443
这些需要与你在<VirtualHost>
块中使用的相匹配