我想设置我的Linux机箱,以便任何打到端口80的东西只要告诉443。我希望它是无论域,IP或任何具体的细节可能存在。 如果可以要求80港口,应该告诉不要。 我们在443年这样做。
我将在443上使用Apache,因此可以将它绑定到80,但是没有看到解决scheme必须在端口80上包含Apache。
要清楚,我正在寻找一个解决scheme,不需要更改虚拟主机。 我理解可以通过inheritance传递下去的全局redirect。 这需要虚拟主机的变化。 我正在寻找更全面的东西,更不容易“哎呀,我忘了那条线,现在端口80是暴露我的数据未encryption。
你将如何去解决这个问题? iptables,Apache,用netcat自定义shell脚本和一些神奇的东西,使其去SSL?
把端口80redirect到443对于iptables来说是微不足道的,但从你的描述来看,你显然不想在端口443上运行http:你希望人们从httpredirect到https。
您清楚地知道,这可以在每个虚拟主机的Apache中完成,但您不希望使用它来避免configuration选项; 否则sgtbeano的解决scheme是我会build议。
基于此,我build议您停止在端口80上使用Apache,并且在端口80上运行另一个networking服务器,以实现简单的redirect。
你甚至可以使用不同的configuration目录在80端口上运行一个单独的Apache实例。 这也将避免configurationoopses,但可能会更难以维护(并不是很多人希望2个不同的configuration文件在同一主机上的Apache不同的实例)。 在这种情况下,您可以使用sgtbeano的端口80实例的configuration。
尝试添加到你的httpd.conf;
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
从这里 – > http://www.sslshopper.com/apache-redirect-http-to-https.html
这使用mod_rewrite,所以请确保你有事先安装。
推荐的方法是如您在这里描述的那样在每个站点的VHOST文件中设置它;
http://wiki.apache.org/httpd/RedirectSSL
不过,Apache维基更详细地logging了上面的重写方法;
由于HTTP和HTTPS是两个不同的协议,你不能简单地将iptables tcp / 80 redirecion到tcp / 443,因为apache不会理解tcp / 443上的HTTP
所以HTTP请求必须使它到apache / nginx / etc,然后在应用层被“redirect”。 这将在nginx上使用“redirect / https://domain.name/ ”或在Apache上使用重写规则完成