nginx 反向代理 实战

反向代理

反向代理演示案例预备条件

  1. 准备两个tomcat的服务器。
    这里我们在同一台Linux服务器上运行两个tomcat分别为8080和8081端口。(关于tomcat的准备这里不在过多介绍,可以自行网上搜索)。

  2. 在8080端口的tomcat的webapps路径下。
    创建一个dev文件夹并创建一个a.html的文件。文件内容如下。

<html>
    <h1>tomcat 8080 dev</h1>
</html>
  1. 同样我们在8080端口的tomcat的webapps路径下。
    创建一个prd文件夹并创建一个a.html的文件。文件内容如下。
<html>
    <h1>tomcat 8081 prd</h1>
</html>
  1. 分别启动两台tomcat服务器。
    分别访问一下地址,我们会看到一下结果。
  • http://192.168.8.108:8080/dev/a.html
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4IlUMVdS-1620707202179)(imgs/nginx-re-proxy01.PNG)]

  • http://192.168.8.108:8081/prd/a.html
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7tDZLfbb-1620707202183)(imgs/nginx-re-proxy03.PNG)]

实战——配置反向代理虚拟主机

现在我们来配置一个反向代理8080服务器的虚拟主机。

  1. 我们在http的属性中,新增一个server如下所示:
    server {
        listen       80;
        server_name  192.168.8.108;
        location / {
            proxy_pass http://127.0.0.1:8080;
        }
    }

各个属性的含义如下:

  • server是新增虚拟主机的属性。
  • listen表示当前虚拟主机的监听端口,即为80。
  • server_name请求域名可以有多个,用空格隔开。需要注意的是server_name的匹配规则是:先遍历所有配置的server_name,如果找到了,则执行对应的server,如果没有找到,则默认执行第一个server。
    我们这里就使用ip地址作为域名了。
  • location请求的细分处理,本章后再详细演示。
  • proxy_pass被代理服务器路径。
  1. 测试效果
    通过上面的配置,通过监听80的端口和192.168.8.108域名来反向代理了8080的tomcat服务器。
    现在我们将http://192.168.8.108:8080/dev/a.html地址的端口换成80访问。
    会发现,同样可以得到之前的访问内容。证明我们的反向代理是成功的。
    (注意:80端口是HTTP的默认端口,浏览器一般会自动省略。)

使用location的规则匹配

location匹配规则说明

  • = /uri
    【=】表示精确匹配,只有完全匹配上才能生效
  • ^~ /uri
    【^~】开头对URL路径进行前缀匹配,并且在正则之前。
  • ~ pattern
    【~】开头表示区分大小写的正则匹配
  • ~* patter
    【~*】开头表示不区分大小写的正则匹配
  • /uri
    【/uri】不带任何修饰符,也表示前缀匹配,但是在正则匹配之后
  • /
    【/】通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default

实战——匹配location规则

  1. 配置匹配规则
    通过【~】规则,将dev和prd的访问分别代理到8080和8081上去。
    其他的属性和之前一样,我们这里再在http属性中新增一个server虚拟主机。
    server {
        listen 9000;
        server_name  192.168.8.108;
        location ~/dev/ {
            proxy_pass http://127.0.0.1:8080;
        }
        location ~/prd/ {
            proxy_pass http://127.0.0.1:8081;
        }
    }
  1. 测试效果
    重启nginx之后将http://192.168.8.108:8080/dev/a.html和http://192.168.8.108:8081/prd/a.html地址的端口全部换成9000。
    然后在访问,我们可以发现dev访问的是8080,prd访问的是8081。

小结

  • 虚拟主机反向代理配置server、listen、server_name、location、proxy_pass
  • location匹配规则

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值