5、nginx 配置实例——反向代理

5.1 反向代理实例一:

1、实现效果

​ 打开浏览器,在浏览器中输入地址 http://www.123.com ,跳转到Linux中tomcat主页面中。

2、准备工作

(1)在 linux 系统安装 tomcat,使用默认端口 8080。

① 移动 tomcat 安装包apache-tomcat-8.5.55.tar.gz到Linux系统/usr/src中。

② 解压

tar -xvf apache-tomcat-8.5.55.tar.gz

③启动tomcat

cd /usr/src/apache-tomcat-8.5.55/bin ./startup.sh

④ 查看tomcat 日志

cd /usr/src/apache-tomcat-8.5.55/logs tail -f catalina.out

⑤对外开放端口8080

sudo firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --reload

⑥在本机访问Linux 的tomcat主页

浏览器收索:http://192.168.168.129:8080/

3、访问过程分析

4、具体配置

(1)在 windows 系统中的 host 文件进行域名和 ip 对应关系的配置

路径:C:\Windows\System32\drivers\etc\hosts

编辑文件,在最后面加上ip地址和域名

192.168.168.129 www.123.com

(2)在 nginx 进行请求转发的配置(反向代理配置)

找到并编辑nginx的配置文件

cd /usr/local/nginx/conf vi nginx.conf

修改配置文件:

找到里面的server项,进行修改。

(1)将server_namelocalhost;改为具体的Ip地址 (2)在location /中添加 proxy_pass :8080;

结果:退出并保存

(3)重启nginx

cd /usr/local/nginx/sbin ./nginx -s reload

在本机输入 http://www.123.com 就可以打开tomcat的主页了!!!

5.2 反向代理实例二:

1、实现效果:

使用 nginx 的反向代理,根据访问的路径跳转到不同端口的服务中。

nginx 监听端口为9001,

访问 http://192.168.168.129:9001/edu/直接跳转到 127.0.0.1:8080

访问 http://192.168.168.129:9001/vod/ 直接跳转到 127.0.0.1:8081

2、准备工作

(1)关闭之前的tomcat

//查看之前启动的tomcat进程 ps -ef |grep tomcat //找到id号并关闭 kill -9 3070

(2)准备两个tomcat 服务器,一个8080端口,一个8081端口。

创建两个文件夹tomcat8080和tomcat8081:

cd /usr/src/ mkdir tomcat8080 mkdir tomcat8081

将tomcat的压缩包文件复制到两个文件夹中:

cd /usr/src/ cp apache-tomcat-8.5.55.tar.gz tomcat8080 cp apache-tomcat-8.5.55.tar.gz tomcat8081

分别解压:

cd /usr/src/tomcat8080 tar -xvf apache-tomcat-8.5.55.tar.gz cd /usr/src/tomcat8081 tar -xvf apache-tomcat-8.5.55.tar.gz

启动端口号为 8080 的tomcat:

cd /usr/src/tomcat8080/apache-tomcat-8.5.55/bin ./startup.sh

修改另一个tomcat端口为8081,并保存:

cd /usr/src/tomcat8081/apache-tomcat-8.5.55/conf vi server.xml //(1)找到<Server port="8005" shutdown="SHUTDOWN">修改为8015 <Server port="8015" shutdown="SHUTDOWN"> //(2)找到<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 改为 8081端口号 <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

启动端口号为 8081 的tomcat:

cd /usr/src/tomcat8081/apache-tomcat-8.5.55/bin ./startup.sh

备注:开放 8081 端口:

//添加端口 sudo firewall-cmd --add-port=8081/tcp --permanent //重启防火墙 firewall-cmd --reload //再次查看防火墙开放端口 firewall-cmd --list-all

(3)创建文件夹和测试页面:

//找到位置8080 cd /usr/src/tomcat8080/apache-tomcat-8.5.55/webapps/ //创建文件夹 mkdir edu cd edu //创建测试页面: touch index.html //编辑html代码 vi index.html //里面添加一句代码 <h1>8080--edu<h1> //找到位置8081 cd /usr/src/tomcat8081/apache-tomcat-8.5.55/webapps/ //创建文件夹 mkdir vod cd vod //创建测试页面: touch index.html //编辑html代码 vi index.html //里面添加一句代码 <h1>8081--vod<h1>

(4)本机访问http://192.168.168.129:8080/edu/index.html和http://192.168.168.129:8081/vod/index.html 测试是否可以访问。

3、具体配置

(1)找到nginx的配置文件进行反向代理的配置。

cd /usr/local/nginx/conf/ vi nginx.conf

(2)找到模板

复制一份进行修改:

注释:

location后面; 1、 = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。 2、~:用于表示 uri 包含正则表达式,并且区分大小写 3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。 4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须有 ~ 或者 ~* 标识。

(3)开放对外开放的端口号

//添加端口 sudo firewall-cmd --add-port=9001/tcp --permanent //重启防火墙 firewall-cmd --reload //再次查看防火墙开放端口 firewall-cmd --list-all

(4)重启nginx

cd /usr/local/nginx/sbin/ ./nginx -s reload

4、测试

测试成功!!!