我有两个web应用程序(node.js express apps),web1
和web2
。这些web应用程序希望托管在通常类似http://www.web1.com
和http://www.web2.com
的站点上。我希望将它们托管在nginx反向代理后,作为https://www.example.com/web1
和https://www.example.com/web2
。我不希望将这两个web应用程序作为example.com
上的两个子域公开。
下面是我希望能够实现这一点的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
的相对链接,这将无法正确处理。
实现这一目标的最佳/标准方法是什么?
3条答案
按热度按时间ffx8fchx1#
您应该可以通过检查
$http_referer
来完成此操作,类似于:浏览器在请求
/js/script.js
时会将引用设置为http://example.com/web1/some/page
,因此应用程序不需要更改,除非它们需要在内部处理或关心引用。$http_referer似乎不容易在nginx文档中找到,但在一些站点中提到过:
frebpwbc2#
我是这样想的:
qyzbxkaa3#
使用cookie和
ngx_http_map_module
怎么样?将
add_header Set-Cookie "site=web1;Path=/;Domain=.example.com;";
添加到location /web1 {...}
(也添加web2)。将
map
添加到http
下默认位置为
您可以直接将cookie的值传递给
proxy_pass
,但是使用map是更安全的方法。