Nginx 双网卡反向代理 + Tomcat 内网集群 配置笔记

张开发
2026/4/9 1:05:11 15 分钟阅读

分享文章

Nginx 双网卡反向代理 + Tomcat 内网集群 配置笔记
环境说明Nginx 服务器双网卡外网网卡192.168.75.3nat模式供外部访问内网网卡192.168.160.3仅主机模式与 Tomcat 通信Tomcat 服务器单网卡内网Tomcat-1192.168.160.4Tomcat-2192.168.160.5操作系统CentOS 7 / RHEL 7 系列一、Nginx 服务器配置1.1 双网卡网络配置① 外网网卡配置示例 ens33vi/etc/sysconfig/network-scripts/ifcfg-ens33TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.75.3 NETMASK255.255.255.0 GATEWAY192.168.75.2 # 外网网关必须配置 DNS18.8.8.8② 内网网卡配置示例 ens34vi/etc/sysconfig/network-scripts/ifcfg-ens36TYPEEthernet BOOTPROTOstatic NAMEens34 DEVICEens34 ONBOOTyes IPADDR192.168.160.3 NETMASK255.255.255.0 # 注意内网网卡绝对不能写 GATEWAY nameens36 # 注意 deviceens36 # 注意 defrouteno # 注意1.2 系统环境准备关键步骤# 关闭防火墙systemctl stop firewalld systemctl disable firewalld# 关闭 SELinux或配置布尔值放行网络连接setenforce0sed-is/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/config# 如果不想完全关闭 SELinux可仅开启 Nginx 网络权限推荐生产环境setsebool-Phttpd_can_network_connect1# 关闭 NetworkManager 服务避免与 network 服务冲突systemctl stop NetworkManager systemctl disable NetworkManager# 重启网络服务使配置生效systemctl restart network1.3 验证网络连通性# 检查 IP 是否生效ipaddr show ens33ipaddr show ens36# 测试与两台 Tomcat 的连通性ping192.168.160.4ping2192.168.160.5二、Tomcat 服务器配置两台操作相同2.1 内网 IP 配置vi/etc/sysconfig/network-scripts/ifcfg-ens33# 根据实际网卡名修改TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.160.4 # 另一台改为 192.168.160.5 NETMASK255.255.255.0 # 内网机器不需要配置网关除非有访问外网需求2.2 系统环境准备# 关闭防火墙systemctl stop firewalld systemctl disable firewalld# 关闭 SELinuxsetenforce0sed-is/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/config# 重启网络systemctl restart network2.3 启动 Tomcat# 进入 Tomcat 安装目录的 bin 目录cd/opt/tomcat/bin# 根据实际路径调整./startup.sh# 确认 Tomcat 监听在正确的地址应为 0.0.0.0 或具体内网 IPnetstat-tlnp|grep8080三、Nginx 反向代理配置3.1 编辑 Nginx 配置文件vi/etc/nginx/conf.d/tomcat_proxy.conf# 新建独立配置文件写入以下内容server { listen 80; server_name 192.168.75.3; # 外网访问的 IP 或域名 # 代理路径 /test4/ → Tomcat-4 location /test4/ { proxy_pass http://192.168.160.4:8080/; } # 代理路径 /test5/ → Tomcat-5 location /test5/ { proxy_pass http://192.168.160.5:8080/; } }3.2 验证并重载 Nginxnginx-t# 检查语法systemctl reload nginx# 重载配置3.3 测试反向代理# 在 Nginx 服务器本机测试curl-Ihttp://127.0.0.1/test4/# 从外网浏览器访问http://192.168.75.3/test4/ http://192.168.75.3/test5/四、故障排查备忘录故障现象可能原因检查命令502 Bad GatewaySELinux 阻止 Nginx 联网getsebool httpd_can_network_connect502 Bad Gateway防火墙阻挡 8080 端口systemctl status firewalld404 Not Foundproxy_pass路径拼接错误检查末尾斜杠是否与 Tomcat 应用路径匹配No route to host内网 IP 不在同一网段ping 192.168.160.4Connection refusedTomcat 未启动或监听在 127.0.0.1netstat -tlnp | grep 8080网卡启动失败多个网关配置冲突确保内网网卡配置文件中无GATEWAY网卡名称不匹配配置文件DEVICE与实际网卡名不符ip link show查看真实网卡名五、关键注意事项内网网卡绝对不能配置GATEWAY否则会导致路由冲突网络服务启动失败。优先关闭 NetworkManager避免与network服务争抢网卡控制权。SELinux 若不想关闭务必执行setsebool -P httpd_can_network_connect 1。修改配置文件后务必执行nginx -t和systemctl reload nginx确保配置生效。虚拟机网络模式必须统一Nginx 内网网卡与 Tomcat 网卡应处于同一虚拟网络如均为“仅主机模式”。

更多文章