Nginx反向代理部署的应用图片无法加载,仅新标签打开后刷新才显示
问题根因
- 当前配置未将客户端真实请求头转发到后端8007端口服务,后端应用的域名校验、协议识别逻辑异常,触发静态资源访问拦截
- 手动在新标签页打开图片时,浏览器发起的独立资源请求会临时通过后端校验,资源被缓存到本地后,刷新原页面就可以直接读取缓存显示图片
修复配置
将原location块替换为以下内容:
location / { proxy_http_version 1.1; proxy_pass http://127.0.0.1:8007/; proxy_redirect http://127.0.0.1:8007 https://my-url.com; # 补充请求头转发规则 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
配置说明
proxy_set_header Host $host:将用户请求的真实域名(my-url.com)转发给后端服务,避免后端识别到的Host为127.0.0.1:8007触发域名校验拦截proxy_set_header X-Forwarded-Proto $scheme:将用户请求的真实协议(HTTPS)转发给后端服务,避免后端按HTTP协议返回资源导致浏览器跨域/混合内容拦截- 另外两个头用于后端服务获取真实客户端IP,不影响资源加载但建议补充
修改后执行nginx -s reload重载配置即可生效。
内容的提问来源于stack exchange,提问作者Stefan Springer
相关产品推荐
相关产品推荐

