我想设置我的linux盒,这样任何命中端口80的东西都会被告知,询问443。我希望它是无论域,IP或任何具体的细节可能存在。如果它可以要求80端口,它应该被告知不。我们在443上这么做。
我将在443上使用Apache,这样就可以轻松地将其绑定到80,但不要认为解决方案必须包括端口80上的Apache。
为了明确起见,我正在寻找一个不需要对vhost进行更改的解决方案。我理解可以通过继承传递的全局重定向。这需要更改vhost。我正在寻找更全面的东西,不太容易“哎呀,我忘了那一行,现在端口80是公开我的数据未加密。”
你将如何着手解决那个问题?iptables,apache,带有netcat的自定义shell脚本,以及一些使它成为SSL的魔法?
发布于 2013-11-11 16:39:29
尝试将此添加到您的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确实记录了上述重写方法的更多细节;
http://wiki.apache.org/httpd/RewriteHTTPToHTTPS
发布于 2013-11-11 16:42:59
在iptables中,将端口80重定向到443非常简单,但是从您的描述来看,您显然不希望在端口443上运行http :您希望将用户从http重定向到https。
您清楚地知道,对于每个虚拟主机,在Apache中都可以这样做,但是您不愿意使用它来避免配置操作;否则,sgtbeano的解决方案就是我推荐的。
基于此,我建议您停止在端口80上使用Apache,并在端口80上运行另一个进行简单重定向的the服务器。
您甚至可以使用不同的配置dir在端口80上运行Apache的单独实例。这也将避免配置oopses,但可能更难维护(并不是很多人期望Apache在同一台主机上有两个不同的配置文件)。在本例中,您可以对端口80实例使用sgtbeano的配置。
发布于 2013-11-11 16:41:08
由于HTTP和HTTPS是两种不同的协议,所以不能简单地将tcp/80重发到tcp/443,因为apache不会理解tcp/443上的HTTP
因此,HTTP请求必须到达apache/nginx/etc,然后“重定向”到应用层。这将在nginx上使用“重定向/ https://domain.name/”或使用apache上的重写规则来完成。
https://serverfault.com/questions/554180
复制相似问题