背景:
服务器A 192.168.33.229 ,端口8080有项目
服务器B 192.168.33.90 ,有nginx,可以访问服务器A
客户机 192.168.33.120 ,无法访问服务器A,可以访问服务器B
需求
客户想访问服务器A的项目
服务器A (若服务器B能够直接访问项目可跳过该步骤)
firewall-cmd --permanent --zone=public --list-ports
若没有返回8080端口信息则代表8080端口被防火墙拦截保护。我们需要执行以下命令开放端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防护墙来生效刚刚的防火墙操作
firewall-cmd --reload
服务器B测试访问服务器A上的项目
curl -v http://192.168.33.229:8080
能够正常返回服务器A的html代码即为测试成功
服务器B
编辑nginx配置文件并保存
server {
listen 80;
server_name localhost;
client_max_body_size 1024M; # 无文件上传需求的可注释
location / {
proxy_pass http://192.168.33.229:8080;
}
}
重启nginx
#物理机安装重启方式:
systemctl restart nginx
#docker 安装重启方式
docker restart nginx
客户机
访问 http://192.168.33.90 即可实现进入服务器A的8080项目
服务器B特殊场景
不想通过服务器B的80端口进行转发代理,想通过8080端口转发
⚠️ server 下面的 listen 后的 8080 就是客户端最终访问服务器时用的端口(如果是阿里云,需要注意,这个端口需要在安全策略中开通)
⚠️如果您使用docker安装的nginx,请确保8080端口已绑定nginx容器实例,否则无法访问
server {
listen 8080; # 监听8080端口
server_name localhost; # 域名或IP地址
client_max_body_size 1024M; # 无文件上传需求的可注释
location / {
proxy_pass http://192.168.33.229:8080; # 将请求转发到后端服务器
}
}
评论区