我有一个使用 Apache 在端口 2000 上运行的反向代理。
它正在侦听同一端口上正在广播 HTTP 的另一个 Web 服务器。
我可以让反向代理正常运行,并且 HTTPS 正常工作,当我访问 http:// 时,它会返回 400 Bad Request,这很好。
但是,我想自动将任何 HTTP 流量重定向到 HTTPS。我尝试过使用 RewriteEngine,但没有成功。
我正在使用 Docker Compose,此配置位于 httpd 配置中。
HTTPS 工作正常但未发生重定向的示例:
<VirtualHost *:2000>
SSLEngine on
SSLCertificateFile /crt/cert.crt
SSLCertificateKeyFile /crt/key.key
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
ProxyPreserveHost On
ProxyPass / http://dockercontainer:2000/
ProxyPassReverse / http://dockercontainer:2000/
</VirtualHost>
它们都需要匹配相同的端口。
谢谢。
您遇到的问题可能是因为在建立 SSL 之后正在处理 RewriteEngine 和相关指令,这意味着您当前的
以下是修改 Apache 配置以实现 HTTP 到 HTTPS 重定向的方法:
# HTTP VirtualHost to redirect all HTTP traffic to HTTPS
<VirtualHost *:2000>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
# HTTPS VirtualHost to handle reverse proxy with SSL
<VirtualHost *:2000>
SSLEngine on
SSLCertificateFile /crt/cert.crt
SSLCertificateKeyFile /crt/key.key
ProxyPreserveHost On
ProxyPass / http://dockercontainer:2000/
ProxyPassReverse / http://dockercontainer:2000/
</VirtualHost>