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 如果我尝试在路径名处添

我尝试使用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;
}
它工作得很好

那么,以上两者有什么区别呢?

添加问题 如果我使用别名,例如:

location /static {
        alias /mypath/static/;
}


上述两种方法有区别吗?

不幸的是,这就是相对URL的工作方式。由于/表示新的目录或URI分段,您的资产将从
/name/
目录加载。但是在通过
/name
访问它的情况下,您的资产将从根URL加载,因为浏览器认为这些文件是它的本地文件。

因此,这就是Nginx使用
location/{…}
作为根URL的原因。斜线是必不可少的。
location /static {
        alias /mypath/static;
}