我的服务器上运行了一个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;
}
}
非常感谢任何帮助。
答案 0 :(得分:8)
您无法将proxy_pass
与try_files
组合在一起。正如配置中的注释所描述的那样,try_files
指令使nginx查找与URI匹配的文件,然后查找与URI匹配的目录。如果找不到,则回复404.您可以在nginx documentation中详细了解try_files
。
您的问题并不清楚您需要使用try_files
,因此修复配置的最简单方法是删除try_files
行。