Nginx 位置 - 站点配置不起作用
Nginx location - sites configuration not working
我有一个 nginx 运行 一个位置 :
location / {
proxy_pass http://10.22.1.27:3000;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
结果我的申请出现了
当我将位置更改为
location /login {
proxy_pass http://10.22.1.27:3000;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
我的申请根本没有出现。在控制台中,我收到以下错误消息:
ET https://demo3.xxxxx.rocks/static/js/vendor.f9538d6f661cb0e94054.js net::ERR_ABORTED 404(未找到)
知道我做错了什么吗
A location
告诉 NGINX 在路径匹配给定模式时如何处理请求。
location /
将匹配任何路径,或更准确地说,任何以 /
开头的内容,这实际上是任何请求。所以这已经包括 /login
和您导航到的任何其他页面或路径。
当您将其更改为 location /login
时,它将不再匹配您首次导航到该地址时的 /
,这将导致 HTTP 404 Not Found
.
我知道你没有用过这个但只是为了说明一点,注意 location /
与 location = /
不同,因为第二种情况只有在路径为 [=51 时才会匹配=]完全 /
,所以它不再匹配/login
.
底线:将其保留为 location /
除非您有特定需要以不同方式处理不同路径。例如,您可能会在 /api/...
处使用 proxy_pass
处理请求到后端,但 /docs/...
请求通过从本地目录提供静态文件来处理。
编辑:此外,如果您确实更改了位置路径,请记住它会将其附加到 proxy_pass
地址。因此,对 /login/foo
的请求将被转发到 http://10.22.1.27:3000/login/foo
。如果上游服务器无法识别 /login
路径,那么它将失败并显示 404 Not Found
.
要解决此问题,请向 proxy_pass
添加一个路径,即使它只是一个根路径,例如 http://10.22.1.27:3000/
(注意尾部斜杠)。然后 NGINX 会将 location
路径映射到 proxy_pass
路径,并且只附加剩下的内容。例如,现在对 /login/foo
的请求将被转发到 http://10.22.1.27:3000/foo
.
我有一个 nginx 运行 一个位置 :
location / {
proxy_pass http://10.22.1.27:3000;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
结果我的申请出现了
当我将位置更改为
location /login {
proxy_pass http://10.22.1.27:3000;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
我的申请根本没有出现。在控制台中,我收到以下错误消息:
ET https://demo3.xxxxx.rocks/static/js/vendor.f9538d6f661cb0e94054.js net::ERR_ABORTED 404(未找到)
知道我做错了什么吗
A location
告诉 NGINX 在路径匹配给定模式时如何处理请求。
location /
将匹配任何路径,或更准确地说,任何以 /
开头的内容,这实际上是任何请求。所以这已经包括 /login
和您导航到的任何其他页面或路径。
当您将其更改为 location /login
时,它将不再匹配您首次导航到该地址时的 /
,这将导致 HTTP 404 Not Found
.
我知道你没有用过这个但只是为了说明一点,注意 location /
与 location = /
不同,因为第二种情况只有在路径为 [=51 时才会匹配=]完全 /
,所以它不再匹配/login
.
底线:将其保留为 location /
除非您有特定需要以不同方式处理不同路径。例如,您可能会在 /api/...
处使用 proxy_pass
处理请求到后端,但 /docs/...
请求通过从本地目录提供静态文件来处理。
编辑:此外,如果您确实更改了位置路径,请记住它会将其附加到 proxy_pass
地址。因此,对 /login/foo
的请求将被转发到 http://10.22.1.27:3000/login/foo
。如果上游服务器无法识别 /login
路径,那么它将失败并显示 404 Not Found
.
要解决此问题,请向 proxy_pass
添加一个路径,即使它只是一个根路径,例如 http://10.22.1.27:3000/
(注意尾部斜杠)。然后 NGINX 会将 location
路径映射到 proxy_pass
路径,并且只附加剩下的内容。例如,现在对 /login/foo
的请求将被转发到 http://10.22.1.27:3000/foo
.