使用现有的反向代理(node.js应用程序)将所有http转发到https上,

前言:在过去的几天里,我已经search了几十个教程,我找不到任何一个教程,所以我在这里问。 我希望这是简单的,我失踪了。 我感谢任何build议,我可以得到!

好的 – 所以我运行了一个安装了nginx的centos 6 vps。 我有这个VPS的多个域名。 在问题的域名,我正在运行一个node.js应用程序在端口9000.我目前有proxy_pass安装点www.example.net指向www.example.net:9000 – 这工作正常。 我现在需要做的是将所有stream量传入http://www.example.net ,并将其redirect到https://www.example.net,同时在端口9000上保留应用的代理通行证。

再次,我已经尝试了几十个不同的教程和stackoverflow的答案,但没有一个为我工作。 我不得不恢复到我开始使用的nginxconfiguration,只有这样我才能在浏览器中查看我的应用程序。 我会在这里张贴我所拥有的东西,如果有人能指出我正确的方向,将不胜感激!

server { listen 123.45.678.90:80; server_name example.net www.example.net; error_log /var/log/httpd/domains/example.net.error.log error; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass https://123.45.678.90:9000/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } 

我们为我们的设置做了这样的事情。 我们的“将所有http请求重定向到https ”的nginx配置如下所示:

 server { listen 123.45.678.90:80; server_name example.net www.example.net; error_log /var/log/httpd/domains/example.net.error.log error; # Always redirect to HTTPS redirect 301 https://www.example.net$request_uri; } server { listen 123.45.678.90:443 ssl; server_name example.net www.example.net; error_log /var/log/httpd/domains/example.net.error.log error; ssl_certificate /path/to/server.crt ssl_certificate_key /path/to/server.key location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass https://123.45.678.90:9000/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } 

因此,侦听端口80的HTTP服务器总是发送HTTP 301重定向到侦听端口443的HTTPS服务器。

希望这可以帮助!