nginx的proxy_pass_header到$host的问题 (4063人路过)
17:13 , 引用(0) Via 本站原创
在配置一个location的时候,希望使用一个变量如$host来指示nginx代理:
引用
如你想不到,这个配置是不能使用的,查看error.log,打出来的信息也无法帮助解决问题。
但相同情况下,root标签就工作得很好:
引用
locatin /test/ {
root /dev/shm/$host;
}
root /dev/shm/$host;
}
令人匪夷所思,估计这是nginx的一个bug,或者是一个搅不清的逻辑?
把上面的错误配置改成
引用
或者
引用
等等,都不能解决问题,最后是用了个奇怪的配置方式,居然能工作……
引用
这个配置就能工作正常,但上面这个配置只支持单ip的后端,能不能支持upstream呢?
再改一下测测
引用
upstream backend.sudone.com {
server 127.0.0.1:80;
}
location /test/ {
#固定写的后端upstream
proxy_pass http://backend.sudone.com;
#$host=test.sudone.com;
proxy_set_header Host $host;
}
server 127.0.0.1:80;
}
location /test/ {
#固定写的后端upstream
proxy_pass http://backend.sudone.com;
#$host=test.sudone.com;
proxy_set_header Host $host;
}
嗯?能用!
有了这个办法,我便不用在数十个主机配置内把/test/这个location贴上数十次,另外,它也可以支持这样的写法:
引用
还可以用正则表达式对host进行匹配:
引用
set $vhost $host;
if $host ~* "([^\.]+)\.sudone\.com" {
set $vhost $1.xxx.com;
}
location /test/ {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host fetch.$host;
}
if $host ~* "([^\.]+)\.sudone\.com" {
set $vhost $1.xxx.com;
}
location /test/ {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host fetch.$host;
}
可用的方面就广了。
—————————————————
补充:
在这个配置里,我的nginx代理的后端(backend)也是nginx,目前尚不清楚其它的web服务器如apache等是否能在这样的配置下工作正常。
相关齐齐奔跑博客日志
在线自动 自动 Apache 转换 Nginx 伪静态规则
nginx for windows之反向代理
LNMPA是什么?
LNMP一键安装包 0.7发布 - 支持LNMPA
nginx 泛域名解析
nginx反向代理多个域名(虚似主机)
Nginx安装配置(含PHP支持、虚拟主机、反向代理负载均衡)
Linux VPS上配置Nginx反向代理
nginx反向代理配置及优化
在线自动 自动 Apache 转换 Nginx 伪静态规则
nginx for windows之反向代理
LNMPA是什么?
LNMP一键安装包 0.7发布 - 支持LNMPA
nginx 泛域名解析
nginx反向代理多个域名(虚似主机)
Nginx安装配置(含PHP支持、虚拟主机、反向代理负载均衡)
Linux VPS上配置Nginx反向代理
nginx反向代理配置及优化
作者:77run@齐齐奔跑 -- 骑士威科技
地址:http://blog.77run.com/nginx-proxy_pass_header-host/
版权所有©转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: 77run 编辑于2011/09/15 23:46
大 | 中 | 小 
0 Responses to "A Sample Post with Links"

