在现代 Web 开发中,Nginx作为一款高性能的开源反向代理服务器,提供了强大的功能来管理网络流量和路由。本文将介绍如何利用 Nginx 的反向代理功能,将不同路径的请求转发到不同端口的 Tomcat 服务上,以实现多端口跳转的效果。
使用 Nginx 的强大反向代理功能,我们能够根据访问路径轻松地将请求分发到不同端口的服务上。设置 Nginx 监听在端口号 9001 上。
当访问 http://192.168.17.129:9001/edu/ 时,请求将直接转发到本地地址 127.0.0.1 的 8080 端口上;
而当访问 http://192.168.17.129:9001/vod/ 时,则会直接跳转到本地地址 127.0.0.1 的 8081 端口上。
这种配置方式让我们能够实现基于路径的定向请求转发,为服务架构的灵活性和性能优化提供了一种简便而有效的方式。
准备两个 tomcat 服务,一个 8080 端口,一个 8081 端口。
在配置两个 Tomcat 服务时,首先启动了一个监听在 8080 端口上的 Tomcat 服务。这一步简单直接,仅需启动 Tomcat 即可。在确保启动成功后,创建了一个名为 “edu” 的目录,并在其中添加了一个名为 “a.html” 的测试文件,文件内容体现了连接到 8080 端口的字样,以确认该端口的服务正常运行。
随后,为了启动第二个 Tomcat 服务,对其配置文件进行了修改。通过修改 server.xml 文件中的端口配置,将原本的 8005、8080、8009 分别更改为 8015、8081、8019,确保端口号唯一性并避免冲突。启动 Tomcat 后,确认在 8081 端口上成功启动了第二个服务,并在其 webapps 目录下创建了名为 “vod” 的文件夹,并添加了名为 “a.html” 的测试文件。文件内容反映了连接到 8081 端口的字样,用以验证该端口服务的正常运行。
这样的设置允许我们在不同端口上分别启动并验证了两个独立的 Tomcat 服务。通过这种配置,我们为接下来的 Nginx 反向代理设置奠定了基础,以便根据路径来将请求定向到不同的 Tomcat 服务上。
在 Nginx 的配置文件 nginx.conf 中,我们新增了一个 server 块来设置反向代理规则。以下是配置内容的解释和说明。
server {
listen 9001; # 监听端口 9001
server_name 192.168.17.129; # 服务器 IP
location /edu/ {
proxy_pass http://127.0.0.1:8080; # 将 /edu/ 路径映射到 8080 端口的 Tomcat
}
location /vod/ {
proxy_pass http://127.0.0.1:8081; # 将 /vod/ 路径映射到 8081 端口的 Tomcat
}
}
listen: 指定 Nginx 监听的端口号为 9001,即这个配置生效于访问该端口的请求。
server_name: 指定服务器的名称或 IP 地址,该项设置为 192.168.17.129。
location: 定义了不同路径的匹配规则。
location ~ /edu/: 使用正则表达式匹配以 /edu/ 开头的路径。~ 表示开启正则匹配。
location ~ /vod/: 同样使用正则表达式匹配以 /vod/ 开头的路径。
/edu/
: 匹配以 /edu/
开头的路径,将请求转发至 http://127.0.0.1:8080
。
/vod/
: 匹配以 /vod/
开头的路径,将请求转发至 http://127.0.0.1:8081
。
~: 在 location 指令中表示开启正则表达式匹配。对应的路径会被视为正则表达式,以实现更灵活的路径匹配。
~*: 类似于 ~,但它表示执行大小写不敏感的正则匹配。
=: 精确匹配指定的路径。例如,location = /path 表示只匹配精确路径 /path。
^~: 表示在正则匹配前缀的情况下,如果路径与 ^~ 后面的字符串匹配,则不再进行正则匹配,而是直接使用这个规则。通常用于避免正则匹配对其他规则产生影响。
这些符号能够帮助在 Nginx 配置文件中更精细地定义不同路径的匹配规则,以实现灵活的请求转发和路由功能。
确保防火墙已开放对外访问的端口号 9001、8080 和 8081:
firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload
这些命令的执行确保了系统防火墙对外部网络的访问限制已经放开,允许外部网络通过 TCP 协议访问指定的 9001、8080 和 8081 三个端口。这对于 Nginx 服务监听在这些端口上,并进行反向代理转发请求是必要的设置。
启动 Nginx,并访问以下地址进行测试。
http://192.168.17.129:9001/edu/
,将跳转到 8080 端口的 Tomcat 服务。http://192.168.17.129:9001/vod/
,将跳转到 8081 端口的 Tomcat 服务。通过本文的介绍和配置,你已经学会如何利用 Nginx 的反向代理功能,根据不同路径将请求转发至不同的 Tomcat 服务。这种方式可以实现更灵活的流量管理和负载均衡,为 Web 应用的部署和扩展提供了便利。