[英]Forward all http to https on nginx with existing reverse proxy (node.js app)
前言:在過去的幾天中,我已經搜索了數十本教程,而其中的任何一本都無法使用,這就是為什么我在這里問這個問題。 我希望這很簡單,我很想念。 感謝您能得到的任何建議!
好的-我正在安裝nginx運行centos 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";
}
}
我們為設置執行類似的操作。 我們用於“將所有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服務器始終向偵聽端口443的HTTPS服務器發出HTTP 301重定向。
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.