小编典典

在nginx后面运行Spring Boot应用程序

spring-boot

我已经在服务器上启动并运行了一个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;
        }
}

很感谢任何形式的帮助。


阅读 317

收藏
2020-05-30

共1个答案

小编典典

您无法proxy_passtry_files尝试的方式与之结合。正如配置中的注释所描述的那样,该try_files指令使nginx查找与URI匹配的文件,然后寻找与URI匹配的目录。如果找不到,它将以404响应。您可以try_filesnginx文档中了解更多信息。

从您的问题尚不清楚您是否需要使用它try_files,因此修复配置的最简单方法是删除该try_files行。

2020-05-30