我一直在阅读并尝试不同的配置,以将请求发送到端口 10000 上的服务器,以将 http 请求重定向到 https 请求。
出于某种原因,我无法弄清楚当我使用端口 10000 时如何实现这一点,尽管我可以为端口 80(隐式)设置重写规则来执行此操作:
我想要的只是如下请求:
http://example.com:10000
将我重定向至
https://example.com:10000
我当前的 vhost,许多不同尝试中的最后一次当前设置如下,但它似乎根本不起作用:
<VirtualHost *:10000>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_POST}%{REQUEST_URI}
ErrorLog "/var/log/httpd/webmin-redirect_error_log.log"
CustomLog "/var/log/httpd/webmin-redirect_access_log.log" common
</VirtualHost>
我还尝试了其他一些方法,但似乎没有任何作用,如能得到任何帮助我将不胜感激。
编辑:我已经在 httpd.conf 中重写了将端口 80 重定向到 https 的内容。如果我从外部访问端口 10000,它将被重定向到 https,但从局域网访问时,http://192.168.0.2:10000“事实并非如此。
答案1
您必须确定端口 10000 是 HTTP 还是 HTTPS。对于 HTTPS,您必须使用 SSL* 配置行创建自己的虚拟主机。您不能在同一个 IP 的同一个端口上同时拥有两者。
答案2
您可以轻松地完成此操作:
Webmin > 配置 Webmin > SSl 配置
在>将非 SSL 请求重定向到 SSL 模式?中选中“是”。
重新加载浏览器并清除缓存(Ctrl + Shift +R)
答案3
可以通过重定向到自定义“400 - 错误请求”页面并使用重写规则修改重定向来实现此目的。在以下示例中,我请求
http://test.mydomain.com:27000
并重定向至
https://test.mydomain.com:27000
有一个虚拟主机。
代码:
ErrorDocument 400 /
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}:27000/$1 [R,L]
或者您直接重定向到该页面的 HTTPS 版本。
代码:
ErrorDocument 400 https://test.mydomain.com:27000
但您将失去在真正的“错误请求”页面上重定向的能力。