# 一、反向代理实例一
实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到 linux 系统 tomcat 主页面中。
# 1、准备工作
在linux系统安装tomcat,使用默认端口8080;tomcat包在官网即可下载,导入linux系统使用tar -xvf
命令进行解压,进入tomcat的bin目录使用./startup.sh
启动tomcat服务器。
设置防火墙,对外开启8080端口,firewall-cmd --add-port=8080/tcp --permanent
重启防火墙 firewall-cmd –reload
在浏览器输入http://linux服务器IP地址:8080
,访问到tomcat主页。
此时访问服务器ip地址的8080端口可访问到tomcat,但若需使用域名加端口号的方式进行访问则必须通过域名与IP地址的解析转换,有两种方式,一种是通过公网DNS服务器解析域名,查找对应IP地址进行访问,另一种是修改本地主机的hosts文件,添加IP地址和域名的对应关系。例如以下写入配置。
192.168.139.27 www.123.com
指定了linux服务器IP192.168.139.27和域名www.123.com的对应关系,这样当浏览器访问www.123.com域名时,会自动查找本地hosts文件找到对应IP192.168.139.27进行访问。
进行上述配置后,在浏览器输入www.123.com:8080即可访问到tomcat主界面,那么如何只需要输入 www.123.com 便可以跳转到 Tomcat 初始界面呢?便需要用到 nginx 的反向代理。
# 2、配置nginx反向代理
在 nginx.conf 配置文件中增加如下配置:
server {
listen 80;
server_name www.123.com; ##指定服务域名
location / {
proxy_pass http://127.0.0.1:8080; ##将来自nginx的请求代理转发到本地8080端口的tomcat服务
index index.html index.htm;
}
}
2
3
4
5
6
7
8
9
如上配置,我们监听 80 端口,访问域名为 www.123.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8080 路径上。在浏览器端输入 www.123.com 结果如下:
# 二、反向代理实例二
实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中。
nginx 监听端口改为 9001
访问http://服务器IP地址:9001/edu/
直接跳转到 服务器IP地址:8081
访问http://服务器IP地址:9001/vod/
直接跳转到 服务器IP地址:8082
# 1、准备工作
准备两个 tomcat,一个 8001 端口,一个 8002 端口,并准备好测试的页面。
在tomcat1文件夹内conf/server.xml
文件,修改其port=8081
,webapps目录下创建edu目录,在该目录下创建a.html,写入8081!!
在tomcat2文件夹内conf/server.xml文件,修改其port=8082
,webapps目录下创建vod目录,在该目录下创建b.html,写入8082!!
测试http://服务器IP地址1:8081
和http://服务器IP地址2:8082
都能访问通即可。
# 2、配置nginx反向代理
修改nginx配置文件,在 http 块中添加 server{}
server {
listen 9001;
server_name 192.168.139.27; ##指定服务器IP地址
location ~ /edu/ {
proxy_pass http://192.168.139.27:8081;
}
location ~ /vod/ {
proxy_pass http://192.168.139.27:8082;
}
}
2
3
4
5
6
7
8
9
10
11
12
浏览器访问http://192.168.139.27:9001/edu/a.html
跳转到8081!!
浏览器访问http://192.168.139.27:9001/vod/b.html
跳转到8082!!
# 3、location指令说明
该指令用于匹配 URL。
location [ = | ~ |~* |^~ ] uri {
}
2
3
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。