繁体   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