尝试将所有对 /api 的调用传递到我的 webservice,但使用以下配置时,我不断收到 404 错误。对 / 的调用按预期返回 index.html。有人知道为什么吗?
upstream backend{
server localhost:8080;
}
server {
location /api {
proxy_pass http://backend;
}
location / {
root /html/dir;
}
}
更多信息请点击此处
adept@HogWarts:/etc/nginx/sites-available$ curl -i localhost/api/authentication/check/user/email
HTTP/1.1 404 Not Found
Server: nginx/1.2.1
Date: Mon, 22 Apr 2013 22:49:03 GMT
Content-Length: 0
Connection: keep-alive
adept@HogWarts:/etc/nginx/sites-available$ curl -i localhost:8080/authentication/check/user/email
HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 22 Apr 2013 22:49:20 GMT
Transfer-Encoding: chunked
{"user":["false"],"emailAddress":["false"]}
答案1
错误 404 返回您的后端,他对通过指令传输给它的 url /api 一无所知proxy_pass
。
curl -i localhost/api/authentication/check/user/email
传递后端作为/api/authentication/...
而不是/authentication/...
如果指定了 proxy_pass 但没有指定 URI,则请求 URI 将以客户端在处理原始请求时发送的相同形式传递给服务器
尝试(注意后面的斜线 / backend
)
location /api {
proxy_pass http://backend/;
}