Запуск приложения загрузки Spring для nginx

У меня есть приложение Spring Boot + MVC, работающее на моем сервере и связанное с http://localhost:8000.

Существует прокси nginx (или это обратный прокси, не уверен в имени), который слушает внешний мир на портах 80 и 443. Корень (/) будет корректно разрешаться, но все, что под ним, не будет разрешено и приводит к ошибке 404 (/someControllerName/action,/images/,/css/).

У меня это как моя конфигурация:

upstream jetty {
        server localhost:8000;
}

server {
        listen       80;
        server_name  domain.com;
        return       301 http://www.domain.com$request_uri;
}

server {
        listen       443;
        server_name  domain.com;
        ssl_certificate /etc/nginx/ssl/ssl.crt;
        ssl_certificate_key     /etc/nginx/ssl/ssl.key;
        return       301 https://www.domain.com$request_uri;
}

server {
        listen 80 default_server;
        listen 443 ssl;

        root /usr/share/nginx/html;
        index index.html index.htm;

        server_name www.domain.com localhost;

        #ssl    on;
        ssl_certificate /etc/nginx/ssl/ssl-unified.crt;
        ssl_certificate_key     /etc/nginx/ssl/ssl.key;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
                proxy_pass              $scheme://jetty/$request_uri;
                proxy_redirect  off;
                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;
                try_files $uri $uri/ =404;
        }
}

Любая помощь очень ценится.

Ответ 1

Вы не можете объединить proxy_pass с try_files так, как вы пытались. Как описывает комментарий в вашей конфигурации, директива try_files заставляет nginx искать файл, соответствующий URI, а затем искать каталог, соответствующий URI. Если он также не найден, он отвечает на 404. Более подробную информацию о try_files можно найти в документации nginx.

Из вашего вопроса неясно, что вам вообще нужно использовать try_files, поэтому самый простой способ исправить вашу конфигурацию - удалить строку try_files.