nginx根据不同的访问地址路由到不同的服务
nginx根据不同的访问地址路由到不同的服务
1 目标描述
当访问的浏览器的url不一样时,请求会路由到不同的服务器上;
目标如下:
- 输入以web开头的地址路由到web相关的api上;
- 输入以phone开头的地址路由到phone相关的api上;
结果展示
访问http://127.0.0.1:9999/phone/app/a.html,浏览器返回的结果为:
server-phone
访问http://127.0.0.1:9999/web/app/a.html,浏览器返回的结果为:
server-web
2 环境准备
- 配置好两个tomcat,端口号分别为8080,8081;
- 分别在两个tomcat的webapp目录中分别创建app文件夹;
- 分别两个服务器中的app文件夹内编写a.html文件;
- 8081服务器中a.html内容为
server-web;
80801中a.html的内容为server-phone
; - 分别测试
http://127.0.0.1:8080/app/a.html
和http://127.0.0.1:8081/app/a.html
,测试返回结果是否正常;
3 nginx配置
在server模块配置如下
server {
listen 9999; # 监听的端口号
server_name 192.168.0.103; # nginx所在的服务器ip
# 访问web开头的url路由的服务地址
location /web {
proxy_pass http://127.0.0.1:8080/;
}
# 访问phone开头的url路由的服务地址
location /phone {
proxy_pass http://127.0.0.1:8081/;
}
}
启动nginx
./nginx
访问url测试是否配置成功,测试url如下:
http://127.0.0.1:9999/web/app/a.html
http://127.0.0.1:9999/phone/app/a.html
4 注意事项
location中后面如果不是单纯的/
情况下,比如location /web
,这个时候proxy_pass配置的url一定要以/
结尾;否则则会访问不到对应的server服务;
错误样例
proxy_pass http://127.0.0.1:8081;
正确样例
proxy_pass http://127.0.0.1:8081/;