插播一条不相关的内容: 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
:
然后usr/local/nginx/sbin
中改nginx.conf
:
本来是:
改成:
就做完了: usr/local/nginx/sbin
下./nginx -s reload
热部署nginx, 那么此时在Mac下输入www.123.com就可以访问linux上部署的tomcat:
当然,这只是最简单的例子,实际上稍微深一点的就是这种: 根据不同路径映射到不同的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中的配置, 主要是这里:
上面是初始配置文件,应该配置成这样:
注: 配置中的
location
的~
其实是几种选项中的一种:
-
=
: 严格匹配,没有regex -
~
: URI包含regex, 区分大小写; -
~*
: 不区分; -
^
: 不含regex, 要求nginx服务器找到: 请求和标识URI匹配度最高的location并请求;
如果有regex就要用~
或~*
最终测试: