
简要需求如下(注:以下域名和ip形式纯属假象,你肯定没见过a.b.c.d的ip,这些字母代表0-255之间的数字):
1,aaa.com———>a.b.c.d:8080/web
2,aaa.com/admin–>a.b.c.d:8082/admin
3,bbb.com———->a.b.c.d:8083/wap
经过多次的尝试,始终没法把第一条和第三条映射上,nginx的简化配置如下:
server aaa.com
location / {
proxy_pass http://a.b.c.d:8080/web
}
location /admin{
proxy_pass http://a.b.c.d:8082/admin
}
server bbb.com
location /{
proxy_pass http://a.b.c.d:8083/wap
}
# service nginx reconfigure后发现除了第二条映射生效外,其他两个都始终报302 404错误,然后将第一、三条 location / 分别改成 /web /wap
与/admin一致后,然后通过aaa.com/web aaa.com/wap访问就能成功,通过这规律可能是一个域名只能映射到ip:port;而到模块名就必须也得在域名后加上相应的模块名;而且要用到模块名,在location处的映射必须与应用名一致即如果配置了下面这种形式同样会出错:
server aaa.com
location /myAdmin{
proxy_pass http://a.b.c.d:8082/admin;
}
以上红色字体部分对某些应用必须要相同,否则没法跳转。
根据现有情况,只能改变应用模块的访问方式了,将web,wap所有的应用名去掉,保证a.b.c.d:8080就能访问到web站点,而不需要加上/web,wap同理
改动后自己服务器上测试后通过!
nginx安装:http://www.javali.org/360
评论