Express 如何在nginx反向代理背后为两个web应用程序提供服务
我有两个web应用程序(node.js express应用程序),Express 如何在nginx反向代理背后为两个web应用程序提供服务,express,nginx,proxy,Express,Nginx,Proxy,我有两个web应用程序(node.js express应用程序),web1和web2。这些web应用程序希望托管在通常类似http://www.web1.com和http://www.web2.com。我想在nginx反向代理之后作为https://www.example.com/web1和https://www.example.com/web2。我不想在example.com上将这两个web应用公开为两个子域 下面是我的nginx配置的一个片段(没有SSL终止细节),我希望它能实现这一点: s
web1
和web2
。这些web应用程序希望托管在通常类似http://www.web1.com
和http://www.web2.com
。我想在nginx反向代理之后作为https://www.example.com/web1
和https://www.example.com/web2
。我不想在example.com
上将这两个web应用公开为两个子域
下面是我的nginx配置的一个片段(没有SSL终止细节),我希望它能实现这一点:
server {
listen 443;
server_name .example.com;
location /web1 {
proxy_pass http://www.web1.com:80;
}
location /web2 {
proxy_pass http://www.web2.com:80;
}
}
除了web应用程序使用的相对链接外,这是有效的。因此,web应用程序web1
将有一个类似/js/script.js
的相对链接,无法正确处理
实现这一目标的最佳/标准方法是什么?我认为:
服务器{
听443;
server_name.example.com;
地点/网站1{
代用通行证;
}
位置/网络2{
代用通行证;
}
地点/{
如果($http_referer~*(/web1)){
代用通行证;
}
如果($http_referer~*(/web2)){
代用通行证;
}
}
}
您应该可以通过检查$http\u referer
来执行此操作,例如:
location / {
if ($http_referer ~ ^http://(www.)?example.com/web1) {
proxy_pass http://www.web1.com:80;
}
if ($http_referer ~ ^http://(www.)?example.com/web2) {
proxy_pass http://www.web2.com:80;
}
}
浏览器将把referer设置为http://example.com/web1/some/page
当它请求/js/script.js
时,应用不需要更改,除非它们需要在内部处理或关心引用者
$http_referer似乎不容易在nginx文档中找到,但有几个网站提到了它:
Add_头集Cookie“site=web1;Path=/;Domain=.example.com;”代码>到位置/web1{…}
(也是web2)
将map
添加到http
map $cookie_site $site {
default http://www.web1.com:80;
"web2" http://www.web2.com:80;
}
默认位置是这个
location / {
proxy_pass $site;
}
您可以将cookie的值直接传递给proxy\u pass
。但是,使用map更安全。我不知道ngix,但是在web请求中,有一个http referer,它是当前请求“前面”的页面。你能在ngix中找到推荐人吗?我看到一些地方认为这是一个潜在的解决方案,但我不确定这是如何实现的。看这个:这看起来很好。您是否有可能知道在express中referer头应该设置为什么?如果应该避免,