需求:一台服务器上部署多个应用 ,比如www.host.com/app 映射到 www.host.com:8081
实现方法:
1. nginx 使用把路径访问映射到端口上。但是遇到一个问题是web app里面的html跳转连接错乱。
一开始认为是nginx设置错误,location 后面加斜杠 , 还有是proxy_pass后面的地址加斜杠.这两者有不同的效果,一种没有加斜杠会在请求保留所映射的路径,加了斜杠,那么在请求的时候会去除这些映射的路径。
2. 查看网站,使用rewrite 功能,把路径加上,可是发现不起作用。
3.但是发现web app 表现不正常的现象,一种是样式没有加载出来,二种是跳转老是跳到了主页。通过分析<a href=/content/test.html></a>标签发现,标签里面的写的相对路径/是直接指向了域名的根目录www.host.com 。没有带上所要映射的路径/app
4. 为了解决这个问题,使用了nginx sub filter功能,自动替换/ 为 www.host.com/app/。
5. 但是还是存在一个问题,就是web app里面的逻辑跳转,nginx没有办法修改,还是有一些请教接口。
6. 最终,只能使用二级域名,就完美解决这个问题了。每一个二级域名对应一个web app