簡體   English   中英

NGINX作為Node.js的代理

[英]NGINX as proxy of Node.js

我在NGINX服務器后面使用NODE.js,這是我的Nginx配置:

upstream example.it {
        server 127.0.0.1:8000;
}

server {
        server_name www.example.it;

        location / {
                proxy_pass      http://example.it;
                proxy_redirect  off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
}

一切正常,請求從nginx正確發送到節點但是我發現從Express.js生成的日志文件中存在問題。

問題是所有請求都保存為127.0.0.1,為什么?

我沒有看到任何刪除主機(誰提出請求的真實IP)。

謝謝

假設您使用的是Express 3.0,更好的方法是通過trust proxy設置。

Express文檔

trust proxy啟用反向代理支持,默認情況下禁用

為了使用它:

app.set('trust proxy', true);
app.use(express.logger('default'));

當您使用代理時(例如在開發環境中),當您使用代理時,這具有正常工作的附加優勢。

這是正確的,因為nginx將是遠程主機。 您需要指定自定義日志格式以記錄X-Forwarded-For標頭,請參閱connect logger文檔

app.use(express.logger(':req[X-Forwarded-For] - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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