将Nginx用作服务网关时,使用/js/jquery.js
之类的URL的请求将无法解决。
这似乎是一种可以结合$http_origin
的简单解决方案,但我一直无法弄清楚。
我们将在Docker上使用几种不同的服务,并使用Nginx容器来处理路由。对于使用诸如js/jquery.js
之类的相对URL进行请求的页面,此方法很好,因为浏览器会将其附加到当前URL。
举一个简单的例子:
http {
server {
listen 80;
server_name $HOSTNAME;
location /video {
include proxy_headers.conf;
proxy_pass http://$HOSTNAME:8000/video;
}
}
}
无斜杠有效,因为它请求domain/video/lib/..
:
<link rel="stylesheet" href="lib/bootstrap.min.css">
不带斜杠,因为请求domain/lib/..
:
<link rel="stylesheet" href="/lib/bootstrap.min.css">
感觉解决方案将是检查$http_origin
是否从/video
发出请求,然后重定向(如果它也没有以/video
开头)。
由于Nginx配置文件不允许多个条件,因此我不确定如何最好地尝试这种方法。考虑到这个问题的普遍性,我敢肯定有一个简单的解决方案。谢谢!