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 环境准备

  1. 配置好两个tomcat,端口号分别为8080,8081;
  2. 分别在两个tomcat的webapp目录中分别创建app文件夹;
  3. 分别两个服务器中的app文件夹内编写a.html文件;
  4. 8081服务器中a.html内容为server-web;80801中a.html的内容为server-phone;
  5. 分别测试http://127.0.0.1:8080/app/a.htmlhttp://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/;
posted @ 2022-03-27 21:04  bulingfeng  阅读(3899)  评论(0编辑  收藏  举报