简要需求如下(注:以下域名和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