Nginx配置实例--反向代理

11/11/2023 Nginx

# 一、反向代理实例一

实现效果:使用 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主页。
image.png
此时访问服务器ip地址的8080端口可访问到tomcat,但若需使用域名加端口号的方式进行访问则必须通过域名与IP地址的解析转换,有两种方式,一种是通过公网DNS服务器解析域名,查找对应IP地址进行访问,另一种是修改本地主机的hosts文件,添加IP地址和域名的对应关系。例如以下写入配置。

192.168.139.27   www.123.com
1

指定了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;
        }
    }
1
2
3
4
5
6
7
8
9

如上配置,我们监听 80 端口,访问域名为 www.123.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8080 路径上。在浏览器端输入 www.123.com 结果如下:
image.png

# 二、反向代理实例二

实现效果:使用 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:8081http://服务器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;
		}
}
1
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 {

}
1
2
3

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