Назад | Перейти на главную страницу

nginx не передает внешний запрос на localhost

Сервер Jetty работает на localhost: 8080 и успешно ответы, когда я делаю запросы через curl (putty):

curl -H "Content-Type: application/json" -X POST -d '{"message":"Hi"}' http://localhost:8080

У меня есть следующие nginx.conf конфигурация:

server{
        listen 80;
        server_name 52.27.79.132;
        root /data/www;
        index index.html

        # static files: .png, .css, .js...
        location /static/ {
           root /data/www;
        }

        location ^~/api/*{
            proxy_pass        http://localhost:8080;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header  Host $http_host;
        }

    }

# include /etc/nginx/sites-enabled/*;

Сервлет Java запускается, когда причальный сервер получает запрос к "/"

Браузер успешно возвращает страницу index.html, но когда javascript делает AJAX-запрос к 'http://52.27.79.132/api/'Я получаю ошибку 404


Кто-нибудь знает почему?

Регулярное выражение не соответствует вашей версии. Однако в вашем случае на самом деле вам не нужно сопоставление регулярных выражений, поэтому вы можете использовать эту версию:

location /api {
    proxy_pass        http://localhost:8080;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $http_host;
}

Если вы по какой-то причине хотите использовать регулярное выражение, первая строка должна выглядеть так:

location ^~ ^/api/.*

Точка означает любой символ, а звездочка означает повторение 0 или более раз.

В исходной строке местоположения вы повторили / 0 или более раз.