apache2 反向代理,重写问题

apache2 反向代理,重写问题

我一直告诉自己这应该很简单。背景:我建立了一个网站(https://example.com) 使用 Let's Encrypt 进行 SSL 设置。效果很好。我向内部网络添加了一个新服务器,其中包含另一个站点,完全没有设置 SSL。效果很好。是时候将其添加为子域了 (http://sub1.example.com)我以为 Apache 中的简单反向代理就可以解决问题。但是……当我转到http://sub1.example.com我被重定向到https://sub1.example.com...由于显而易见的原因,它不起作用。

默认.conf-

<VirtualHost *:80>
ServerName example.com       
DocumentRoot /var/www/html

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

RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

(我很确定是重写规则干扰了,但不确定如何修复它?)

Sub1.conf:

<VirtualHost *:80>
ServerName sub1.example.com
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

<Location />
    ProxyPass http://10.10.10.145/
    ProxyPassReverse http://10.10.10.145/
</Location>

</VirtualHost>

那么...我遗漏了什么?(如果它有帮助的话,我也可以包含 default-ssl.conf 文件,只要说出来就可以!)

谢谢!

答案1

您发布的配置中没有任何内容可以触发重定向。

原因可能出在你的 Apache 配置之外,可能是你的 ProxyPass 目标 URL 的配置http://10.10.10.145/,也可能是你 高速传输系统在您的主域 example.com 上配置includeSubDomains策略。
这将把 example.com 的策略应用于 sub1.example.com 并“更正”“错误的 URL”直接在浏览器中将其从 http 更改为 httpS。

从隐身窗口或简单的命令行进行测试curl -v sub1.example.com

答案2

HBruijn 说得对。我查看了 Let's Encrypt 加载的附加 .conf 文件 (/etc/letsencrypt/options-ssl-apache.conf),确实有带有“includeSubDomains”的 HSTS

我知道我遗漏了一些简单的东西。谢谢大家!

相关内容