我一直告诉自己这应该很简单。背景:我建立了一个网站(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
我知道我遗漏了一些简单的东西。谢谢大家!