插播一条不相关的内容: 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
...
这种。
其实并没有什么区别, 这里说一下思路:
- 创建两个运行的tomcat实例(
8081改tomcat的端口,需要改变tomcatconf.xml配置里面的启动和关闭端口号避免冲突), - 启动之后, 写html文件放在
tomcat的webapp目录下面, 创建文件夹和测试页面 -
然后就是nginx中的配置, 主要是这里:
初始配置.png
上面是初始配置文件,应该配置成这样:

不同端口跳转路径.png
注: 配置中的
location的~其实是几种选项中的一种:
-
=: 严格匹配,没有regex -
~: URI包含regex, 区分大小写; -
~*: 不区分; -
^: 不含regex, 要求nginx服务器找到: 请求和标识URI匹配度最高的location并请求;
如果有regex就要用~或~*
最终测试:

最终测试
