【发布时间】:2018-07-04 10:02:35
【问题描述】:
我正在使用 Nginx 来
将所有 HTTP 请求重定向到 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,还是我在这里遗漏了任何东西。如果你能提供帮助,那就太好了。
【问题讨论】:
-
你说“它没有状态码名称”到底是什么意思?
-
我得到
201,但我希望它是201 created -
你到底为什么在乎?状态代码名称对任何机器都没有任何意义。
-
请您澄清一下“它不再有状态代码名称”吗?您是在谈论 nginx 对 HTTPS 代理请求的响应吗?您如何阅读状态行?您能否包含请求 + 响应日志并通过对比预期和观察到的测量值来解释问题?
标签: java spring-boot nginx load-balancing reverse-proxy