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

时间:2014-08-04 18:47:53

标签: nginx 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;
        }
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

您无法将proxy_passtry_files组合在一起。正如配置中的注释所描述的那样,try_files指令使nginx查找与URI匹配的文件,然后查找与URI匹配的目录。如果找不到,则回复404.您可以在nginx documentation中详细了解try_files

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