[英]Why is my Nginx reverse-proxy node.js+express server redirecting to 0.0.0.0?
我有一個配置為通過Ngnix前端在多個域上托管多個node.js + express應用程序的服務器。 一切正常,除了從快速路由發出重定向調用時:
res.redirect('/admin');
然后將客戶端瀏覽器重定向到http://0.0.0.0:8090
看來,快遞標頭中的重定向標頭一定是一個問題,但是為了防萬一,它是有關域的nginx.conf文件:
server {
listen 0.0.0.0:80;
server_name *.example.com;
access_log /var/log/nginx_example_access.log;
error_log /var/log/nginx_example_error.log debug;
# proxy to node
location / {
proxy_pass http://0.0.0.0:8090/;
proxy_redirect off;
proxy_set_header Host $proxy_host;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
解決了。 我的nginx conf文件出現問題,導致節點/表達式接收到錯誤的請求標頭。 當相對路徑傳遞到res.redirect
,它將從傳入的req
對象中拉出Host並將其設置在響應頭中。
proxy_set_header Host $proxy_host;
本來應該
proxy_set_header Host $host;
$proxy_host
是上游主機地址0.0.0.0:port
$host
是傳入的請求標頭主機example.com
更新
正如Louis Chatriot在評論中指出的那樣,較新版本的Nginx已將$host
替換$host
$http_host
,在以前的版本中,該$http_host
返回example.com:port
但現在返回example.com
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.