我已经创建了一个nodeJS应用程序,它是部署在linux机器上的。为了只允许在整个应用程序中使用HTTPS,我创建了一些IP表规则,将所有不可执行的请求重定向到443 => 3000 (3000 ===应用程序端口)。
1)用户输入http域=> https =>端口3000 (应用程序)
2)用户进入https域=>端口3000 (应用程序)
将所有传入的流量路由到https!
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 443
iptables -t nat -I OUTPUT -p tcp -o lo --dport 80 -j REDIRECT --to-ports 443
iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3000
iptables -t nat -I OUTPUT -p tcp -o lo --dport 443 -j REDIRECT --to-ports 3000
iptables-save目前,只有场景2起作用。
要将端口80上的所有传入流量重定向到443 (https),然后重定向到端口3000 (应用程序端口),我必须做什么?
发布于 2019-12-03 10:18:38
您不能只做一个端口80到端口443前进。
您需要返回一个HTTP重定向(HTTP状态代码301或302),以便浏览器知道它在谈论HTTPS,而不是HTTP。
您不能用iptable来实现这一点,最好的方法是使用nginx或apache之类的工具为应用程序代理。这也意味着代理可以处理HTTPS证书处理,这在应用程序中可能也不会更好。
下面是nginx配置的开始:
server {
listen 80;
listen [::]:80;
server_name www.example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443;
listen [::]:443;
server_name www.example.com;
//SSL cert stuff goes here
....
location / {
proxy_pass http://nodejs.server:3000/;
}
}https://serverfault.com/questions/994106
复制相似问题