繁体   English   中英

在 Node.js 中,当应用程序位于反向代理之后时查找原始客户端 URL

[英]In Node.js, finding the original client URL when app is behind a reverse proxy

我正在开发一个 Node.js/Express 应用程序,该应用程序在部署时位于反向代理之后。

例如: http://myserver:3000/是应用程序实际所在的位置,但用户通过https://proxy.mycompany.com/myapp访问它。

我可以很容易地从通过的标头获取原始用户代理请求的主机(如果反向代理配置正确),但是如何从浏览器访问的原始 URL 中获取额外的路径和协议信息?

当我的应用程序必须生成重定向时,它需要知道最终用户的浏览器不仅希望请求通过https转到proxy.mycompany.com ,而且还希望转到myapp的子路径下。

到目前为止,我只能访问proxy.mycompany.com ,这不足以创建有效的重定向。

出于开发目的,我在 nginx 中使用反向代理设置,但我的公司正在使用 Microsoft 的 ISA 以及 HAProxy。

通常,这是通过由反向代理本身插入的x-forwarded-*标头完成的。 例如:

x-forwarded-host: foo.com
x-forwarded-proto: https

看看这里:

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html

可能您可以配置 nginx 以插入您想要的任何x-标头,但约定(标准?)似乎如上所述。

如果您反向代理到诸如/myapp类的子路径,那肯定会使问题复杂化。 据推测,该子路径应该是 nginx 和您的应用程序都可以使用的配置选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM