Node + Express + NGINX应用程序返回localhost而不是域

时间:2017-04-18 17:17:09

标签: node.js express nginx

我的端口10000上的ubuntu服务器上运行了一个节点+快速网站,端口80上的nginx使用了proxy_pass到localhost:10000。我的问题是,当我在express中请求主机时,它返回localhost而不是我的域名。我使用nginx代理,因此我可以在机器上管理指向不同应用程序的多个域。

有没有办法在我的节点+ express服务器上保留原始主机名,同时仍然在nginx中使用proxy_pass?

1 个答案:

答案 0 :(得分:1)

默认情况下,nginx将上游请求中的Host头设置为proxy_pass语句中出现的主机名。在这种情况下localhost

您需要使用proxy_set_header指令明确设置Host标头。

例如,我总是设置这个组:

proxy_set_header  Host               $host;
proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
proxy_set_header  X-Forwarded-Proto  $scheme;
proxy_set_header  Accept-Encoding    "";
proxy_set_header  Proxy              "";

有关详情,请参阅this document