网站首页 > 精选教程 正文
问题描述[what]
原来的Nginx中的代理配置一直工作正常,但是最近莫名奇妙的出现返回的内容是另一个应用的内容,很是郁闷
关键配置如下
server {
listen 80;
server_name a.com
location /proxy {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_redirect off;
proxy_pass https://b.com;
}
}
问题原因
经过排查发现是因为下面的proxy_set_header配置引起的
proxy_set_header Host $host
这个配置将请求的Host设置成为本应用的域名即a.com;导致b.com的Nginx服务器处理请求会读取Host的值即“”a.com,看过我上一遍文章[你是否明白Nginx是如何处理用户请求?]的伙伴就会明白,这个情况下b.com的Nginx服务器它会使用配置的默认服务(server中配置了default_server),如果没有配置默认服务则会用第一个server块;所以导致响应的内容不是预想的。
那么原来为什么是响应是正确的呢?因为原来b.com的Nginx只有一个server块
深究
问:如果我们不配置proxy_set_header Host $host;b.com的Nginx服务器读取的Host值会是什么?
答:读取的是 proxy_pass 这个指令设置的url对应的Host
总结
在写Nginx配置的时候,一定要搞明白每个指令的作用是什么,才去做适当的配置;而不是网上直接粘贴复制
猜你喜欢
- 2024-10-16 Nginx基础篇(信号控制) nginx 信号
- 2024-10-16 Nginx管理挑战 nginx解决方案
- 2024-10-16 Kubernetes对象深入学习之四:对象属性编码实战
- 2024-10-16 音视频零基础到岗位开发实战训练大纲-项目编码篇
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)