Nginx反向代理:路径名中是否包含斜杠有什么区别?
我尝试使用Nginx代理本地端口,就像:Nginx反向代理:路径名中是否包含斜杠有什么区别?,nginx,nginx-reverse-proxy,Nginx,Nginx Reverse Proxy,我尝试使用Nginx代理本地端口,就像: location /name { proxy_pass http://127.0.0.1:8080; } 我第一次像上面那样失去了slash。我尝试使用mydomain.com/name访问。我可以打开页面,但无法加载其他源文件。我查找Chrome控制台,发现源文件要使用mydomain.com/source/style.css加载,而不是mydomain.com/name/source/style.css 如果我尝试在路径名处添
location /name {
proxy_pass http://127.0.0.1:8080;
}
我第一次像上面那样失去了slash。我尝试使用mydomain.com/name
访问。我可以打开页面,但无法加载其他源文件。我查找Chrome控制台,发现源文件要使用mydomain.com/source/style.css
加载,而不是mydomain.com/name/source/style.css
如果我尝试在路径名处添加/
,例如:
location /name/ {
proxy_pass http://127.0.0.1:8080;
}
它工作得很好
那么,以上两者有什么区别呢?
添加问题
如果我使用别名,例如:
location /static {
alias /mypath/static/;
}
或
上述两种方法有区别吗?不幸的是,这就是相对URL的工作方式。由于/表示新的目录或URI分段,您的资产将从
/name/
目录加载。但是在通过/name
访问它的情况下,您的资产将从根URL加载,因为浏览器认为这些文件是它的本地文件。因此,这就是Nginx使用location/{…}
作为根URL的原因。斜线是必不可少的。
location /static {
alias /mypath/static;
}