前言:在过去的几天里,我已经为此搜索过几十个教程,我无法让它们中的任何一个工作,这就是我在这里问的原因。我希望我能错过一些简单的事情。我很感激我能得到的任何建议!
好的 - 所以我安装了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";
}
}
答案 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重定向。
希望这有帮助!