下面是我的配置,除了save_model
路由外,我在所有定义的路由上都收到404,我不明白为什么。
如果我向http://example.tech/connect发出请求,我会得到404;如果我向http://api.example.tech发出请求,我也会得到404。
我看不到哪里出了问题,因为它看起来应该可以工作!
well-known
答案 0 :(得分:0)
出于某种原因,在proxy_pass末尾需要正斜杠
答案 1 :(得分:0)
您需要在proxy_pass
指令中使用特定的uri,而不要使用反斜杠。但是在您的情况下,反斜杠充当特定的uri。 Nginx将'/auth'
(例如)替换为'/'
(您已添加)。
实际上,您输入的答案是正确的,将proxy_pass http://myapp.net;
更改为proxy_pass http://myapp.net/;
。
原因是proxy_pass
在有/没有特定uri的情况下将以两种不同的方式工作。 More details about this directive在nginx.org上。打击是该链接中引用的某些内容。
如果使用URI指定了proxy_pass指令,那么当请求传递到服务器时,标准化请求URI的一部分 匹配位置的位置将替换为伪指令中指定的URI:
位置/名称/ {
proxy_pass http://127.0.0.1/remote/;
}如果指定了不带URI的proxy_pass,则请求URI会以与原始客户端发送时相同的格式传递到服务器 处理请求,或传递完整的规范化请求URI 处理更改的URI时:
位置/ some / path / {
proxy_pass http://127.0.0.1;
}
在您的情况下,proxy_pass
指令中没有URI,因此/auth
将被传递到后端服务器。不幸的是,您的后端服务器没有/auth
资源,因此返回404。如果您的后端服务器确实有/auth
待处理,则在请求uri /auth
时永远不会出现404错误。
答案 2 :(得分:0)
这是我的情况,我得到404而不是502:
# let's define some proxy pass
location ~ /.well-known/acme-challenge {
proxy_pass http://127.0.0.1:5080; # this backend doesn't exist which leads to 502
proxy_set_header Host $host;
}
# this is a default directives
error_page 500 502 503 504 /50x.html; # this is a reason to redirect 502 to 50x.html
location = /50x.html { # but this file doesn't exist in root so we get 404 instead of 502
root /usr/share/nginx/html;
}