使用现有的反向代理(node.js app)将所有http转发到nginx上的https

时间:2016-01-06 21:47:21

标签: node.js redirect nginx proxy

前言:在过去的几天里,我已经为此搜索过几十个教程,我无法让它们中的任何一个工作,这就是我在这里问的原因。我希望我能错过一些简单的事情。我很感激我能得到的任何建议!

好的 - 所以我安装了nginx,运行了一个6点的vps。我在这个vps上有多个域名。在相关域上,我在端口9000上运行了node.js应用程序。我目前有proxy_pass设置将www.example.net指向www.example.net:9000 - 这样可以正常工作。我现在需要做的是将所有流量转入http://www.example.net并将其重定向到https://www.example.net,同时在端口9000上保留应用的代理传递。

同样,我已经尝试过几十种不同的教程和stackoverflow答案,但它们都不适合我。我不得不恢复到我刚开始使用的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;

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";


    }
}

1 个答案:

答案 0 :(得分:2)

我们为我们的设置做了类似的事情。我们的nginx配置了"将所有http次请求重定向到https"看起来像这样:

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服务器始终向侦听端口443的HTTPS服务器发出HTTP 301重定向。

希望这有帮助!