![Apache 反向代理,以便 SSL 浏览器对服务器 IP 的请求重定向到 FQDN](https://linux22.com/image/719181/Apache%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%EF%BC%8C%E4%BB%A5%E4%BE%BF%20SSL%20%E6%B5%8F%E8%A7%88%E5%99%A8%E5%AF%B9%E6%9C%8D%E5%8A%A1%E5%99%A8%20IP%20%E7%9A%84%E8%AF%B7%E6%B1%82%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20FQDN.png)
我在同一台服务器上运行 Apache 和自定义非 Apache Web 服务。我尝试让 Apache 反向代理 SSL 连接另一个站点,以防止当有人在浏览器中输入地址访问我的站点时出现 SSL 警告 (https://xx.xx.xx.xx)。我希望在这种情况下请求能够自动更改为 FQDN 请求,以防止出现证书警告。
我的网站运行在自定义服务(不是 Apache)上,它无法阻止这种情况。我的计划是设置 Apache 监听 443 并重定向到同一台机器上的端口 80,并使用某种重写规则来阻止直接 IP 访问,或重定向它。
我可以让该部分正常工作,但直接发送到 IP 的请求不会自动重定向到对名称的请求。端口 8080 上部分工作的测试配置如下。
<VirtualHost *:8080>
ServerName fqdn
SSLEngine On
SSLCertificateFile /etc/httpd/ssl/Cert.crt
SSLCertificateKeyFile /etc/httpd/ssl/Key.key
SSLCertificateChainFile /etc/httpd/ssl/TrustedRoot.crt
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://fqdn:80/
ProxyPassReverse / http://fqdn:80/
ErrorLog logs/myserver-error_log
CustomLog logs/myserver-access_log common
</VirtualHost>
我尝试了一些重写指令,但收效甚微。此外,javascript 重定向也无法阻止 SSL 错误。有什么想法吗?
答案1
将您的服务更改为监听外部无法访问的端口,例如 8888。Apache 应该处理每个传入请求,并针对您不满意的请求发送重定向(重写)。那些满足条件的请求,例如 FQDN:
ProxyPass / http://127.0.0.1:8888/
ProxyPassReverse / http://127.0.0.1:8888/
在端口 443 上添加一个虚拟主机以用于安全请求(https/SSL),并为那些不使用 FQDN 进入系统的请求添加一个默认服务器。