更多信息请点击此处

更多信息请点击此处

尝试将所有对 /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/;
}

相关内容