请勿启用/允许代理请求!!!

请勿启用/允许代理请求!!!

我曾尝试在 Ubuntu 18.04 上使用 Apache 2.4 配置一个非 www 网站,并且我成功地让事情正常运作,我的https://example.me效果很好。但是,www.example.me子域也处于活动状态(因为我添加了 ServerAlias)。https://www.example.me也打开了,但没有显示证书,这让我很困惑——它不应该重定向到https://example.com?这里的最佳做法是什么 - 我应该同时拥有 www 和非 www 子域名,并为每个子域名创建一个单独的 conf 文件吗?我应该只使用其中一个子域名进行永久重定向吗?为什么重定向在这里不起作用,我需要其他指令吗?

亲切的问候。

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/mysite.me.crt
        SSLCertificateKeyFile /etc/apache2/ssl/mysite.me.key
        SSLCertificateChainFile /etc/apache2/ssl/mysite.me.crt
        DocumentRoot /var/www/html
        ServerName https://example.me
        ServerAlias www.example.me
        UseCanonicalName Off

        ProxyPreserveHost On
        ProxyRequests On
        ProxyVia On

        #ErrorLog /var/log/httpd/tomcat.error.log
        #CustomLog /var/log/httpd/tomcat.log combined

       <Proxy *>
               Order deny,allow
               Allow from all
       </Proxy>
        Include /etc/apache2/sites-available/redirect.conf

        ProxyPass / ajp://localhost:8009/
        ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName example.me
        DocumentRoot /var/www/html
        UseCanonicalName Off
        Redirect permanent "/" "https://example.me/"

        ProxyPreserveHost On
        ProxyRequests On
        ProxyVia On

        #ErrorLog /var/log/httpd/tomcat.error.log
        #CustomLog /var/log/httpd/tomcat.log combined

       <Proxy *>
               Order deny,allow
               Allow from all
       </Proxy>
        Include /etc/apache2/sites-available/redirect.conf

        ProxyPass / ajp://localhost:8009/
        ProxyPassReverse / ajp://localhost:8009/

        #ProxyPass / http://localhost:8080/
        #ProxyPassReverse / http://localhost:8080/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

答案1

首先,请注意永久重定向被缓存通过您的网络浏览器,因此如果您进行了更改并正在测试修改后的配置,请采取预防措施和/或调整您的测试方法。有关更多信息这里


恕我直言,您的配置也充满了错误和不正确的假设。


请勿启用/允许代理请求!!!

    ProxyPreserveHost On
    ProxyRequests On
    ProxyVia On
   <Proxy *>
           Order deny,allow
           Allow from all
   </Proxy>

上述指令旨在创建一个转发代理更糟糕的是打开代理,可以被任何想使用您的网络服务器隐藏其 IP 地址的人滥用。

不需要ProxyRequests On为一个撤销代理人以及ProxyPass 工作指令。

请将其删除。


在您的 HTTP VirtualHost 中

当你只有一个 VirtualHost 时,它将成为默认 VirtualHost(针对该端口和地址)。 详细描述这里。因此,除非您定义了额外的 VirtualHost 块,否则此单个条目:

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName example.me

将用于所有普通的 http 请求,即http://example.me/some-page.htm?foo=bar,等。即使没有显式指定,也将使用该http://www.example.meVirtualHosthttp://your.ip-address/ServerAlias www.example.com指定www.example.com该特定 VirtualHost 的备用主机名。

 Redirect permanent "/" "https://example.me/"

指示所有请求都将导致重定向响应,https://example.me/ 换句话说:

 http://example.me/some-page.htm?foo=bar  ==>  https://example.me/some-page.htm?foo=bar
 http://www.example.me                    ==>  https://example.me/
 http://your.ip-address/bob/is.awe-some   ==>  https://example.me/bob/is.awe-some

当您将所有内容重定向出去时,那么通常用于显示该 VirtualHost 中内容的任何其他指令也是没有意义的,因此您可以省略 等,DocumentRootProxyPass保留一个非常简单的普通 http VirtualHost:

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName example.me
        UseCanonicalName Off

        Redirect permanent "/" "https://example.me/"

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

在您的 HTTPS VirtualHost 中,情况也是如此:如果没有其他 VirtualHosts,它将成为任何请求的默认主机。

唯一的当然是服务器 TLS 证书;它仅对其中包含的主机名有效,其他主机名将导致无效证书错误/警告。

您可能需要检查此处包含的文件的内容:

Include /etc/apache2/sites-available/redirect.conf

相关内容