簡體   English   中英

為什么我的Nginx反向代理node.js + express服務器重定向到0.0.0.0?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM