Apache 似乎忽略了端口 80 vhost

Apache 似乎忽略了端口 80 vhost

今天早些时候,这曾经起作用(或看起来是),但我最近重新启动了服务器,现在 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>块中使用的相匹配

相关内容