我正在使用 Nginx
redirect all HTTP requests to HTTPS
在我的 spring boot 应用程序中。这是我正在使用的 nginx 配置,我能够将所有请求重定向到 Https,但是当我这样做时,我得到正确返回的状态代码但它不再有状态代码名称。如果我删除 nginx 并单独运行 spring boot 应用程序,我可以获得带有其代码名称和代码的 http 状态。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _ ;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ( $http_x_forwarded_proto != 'https' ) {
return 307 https://$host$request_uri;
}
location / {
proxy_set_header X-Forwarded-Proto http;
proxy_pass http://localhost:7070;
expires -1;
}
}
如果我使用 proxy_redirect 而不是 proxy_pass,我在这里做错了什么,或者我在这里遗漏了什么。如果你能提供帮助,那就太好了。
最佳答案
在同一个配置文件中
监听 80 以将请求重定向到 https (443)
server {
listen 80;
listen [::]:80;
server_name your_url.com www.your_url.com;
return 301 https://your_url.com$request_uri;
}
听433
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
location / {
# proxy pass to your app
proxy_pass http://localhost:7070;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
这就是我做事的方式,并且非常适合我,干杯!
关于java - 使用 Nginx 时缺少 HTTP 状态代码名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48438068/