nginx:配置实例进行反向代理 (二)

插播一条不相关的内容: nacos启动之后, 是访问localhost:8848/nacos而不是localhost:8848来进入nacos


用案例说明比较方便:
反向代理 e.g.1
目标: 在Mac上面打开浏览器访问www.123.com跳转到linux上面的tomcat主页

准备工作
linux上面安装tomcat, 默认端口8080,进入tomcat的bin目录,./startup.sh启动, 在Mac上面访问linux中运行的tomcat主页

访问过程分析:

Mac
www.123.com         -->          Nginx               -->   tomcat
(hosts文件配置域名映射的IP)     192.168.68.136:8080          127.0.0.1:8080

其中192.168.68.136是linux的IP, hosts中改是因为域名解析默认首先访问本机的hosts,找不到就去DNS查询(是不是es查询?)


首先Mac的hosts配置加上www.123.com:

hosts.png

然后usr/local/nginx/sbin中改nginx.conf:
本来是:

server1.png

改成:


server2.png

就做完了: usr/local/nginx/sbin./nginx -s reload热部署nginx, 那么此时在Mac下输入www.123.com就可以访问linux上部署的tomcat:

123.png

当然,这只是最简单的例子,实际上稍微深一点的就是这种: 根据不同路径映射到不同的tomcat中

反向代理 e.g.2

"nginx映射端口9001, 希望实现根据不同的URL跳转访问不同的instance的能力, i.e.

  • request --> nginx: www.nginx.com/edu --> linux: 192.168.68.136:8080
  • request --> nginx: www.nginx.com/org --> linux: 192.168.68.136:8081
    ...
    这种。

其实并没有什么区别, 这里说一下思路:

  1. 创建两个运行的tomcat实例(8081改tomcat的端口,需要改变tomcatconf.xml配置里面的启动和关闭端口号避免冲突),
  2. 启动之后, 写html文件放在tomcatwebapp目录下面, 创建文件夹和测试页面
  3. 然后就是nginx中的配置, 主要是这里:


    初始配置.png

上面是初始配置文件,应该配置成这样:

不同端口跳转路径.png

注: 配置中的location~其实是几种选项中的一种:

  1. =: 严格匹配,没有regex
  2. ~: URI包含regex, 区分大小写;
  3. ~*: 不区分;
  4. ^: 不含regex, 要求nginx服务器找到: 请求和标识URI匹配度最高的location并请求;
    如果有regex就要用~~*

最终测试:


最终测试

总结: 反向代理实际上就是找配置文件中server部分的listen(port), server_namelocation

你可能感兴趣的:(nginx:配置实例进行反向代理 (二))