Подтвердить что ты не робот

Ошибка nginx proxy_pass 404, не понимаю, почему

Я пытаюсь передать все вызовы /api в мой веб-сервис, но я продолжаю получать 404 с следующей конфигурацией. Вызывает/возвращает index.html, как ожидалось. Кто-нибудь знает, почему?

upstream backend{
    server localhost:8080;
}

 server {

    location /api {
        proxy_pass http://backend;
    }

    location / {
        root /html/dir;
    }
}

Подробнее здесь

[email protected]:/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

[email protected]:/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"]}
4b9b3361

Ответ 1

Это

location /api {
    proxy_pass http://backend;
}

Нужно быть этим

location /api/ {
    proxy_pass http://backend/;
}

Ответ 2

По какой-то причине proxy_pass в Nginx 1.6.2 сокращает заголовок "Хост" перед переходом на восходящий поток и запрашивает уловы по умолчанию, и даже proxy_header_pass не помогает, поэтому я должен явно установить его:

location / {
    proxy_set_header Host $host;
    proxy_pass  http://backend;
}

Ответ 3

Я забыл слушать PORT 80, исправил его.

"http" часть конфигурации nginx, по адресу:/etc/nginx/nginx.conf, находится ниже:

http {
    server {
        listen 192.111.111.11:80;
        location /path1/ {
            proxy_pass http://127.0.0.1:3000/path1/
        }
    }
}

Теперь доступ к   http://192.111.111.11/path1/
получит результат доступа к   http://127.0.0.1:3000/path1/

Примечание:
   Замените 192.111.111.11 на ваш IP-адрес выше.
   Запустите команду "ifconfig", часть "inet addr" даст ваш IP-адрес