解决实际问题,例:应用部署后连接数据库为A,现将数据库迁移至B,在不修改应用配置的情况下,连接A实际访问B
【推荐】Nginx 端口转发
配置文件
stream {
upstream ssh-proxy {
server 目标IP:3307;
}
server {
listen 3306;
proxy_pass ssh-proxy;
}
}
docker-compose.yml
version: '3'
services:
nginx:
container_name: nginx
image: nginx:1.23.2
restart: always
ports:
- "80:80"
- "3306:3306"
volumes:
- ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./data/html:/usr/share/nginx/html
防火墙端口转发
参考:https://blog.csdn.net/frdevolcqzyxynjds/article/details/125039385
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
## 检查防火墙状态
systemctl status firewalld
## 打开防火墙
systemctl enable firewalld
## 重启防火墙
systemctl restart firewalld
## 再次检查防火墙状态
systemctl status firewalld
## 查看防火墙状态
firewall-cmd --state
## 查看防火墙规则
firewall-cmd --list-all
## 启用网络地址转换 (NAT) 功能
firewall-cmd --add-masquerade --zone=public --permanent
## 重新加载防火墙规则,使更改生效
firewall-cmd --reload
## 重新加载防火墙规则,使更改生效
firewall-cmd --list-all
## 添加端口转发规则,将来自端口 3307 的 TCP 数据流转发到地址 192.162.10.12 上的端口 3307
firewall-cmd --add-forward-port=port=3307:proto=tcp:toport=3307:toaddr=192.162.10.12 --zone=public --permanent
## 重新加载防火墙规则,使更改生效
firewall-cmd --reload
## 查看防火墙规则
firewall-cmd --list-all
三方插件-ncat 端口转发-不推荐,使用过程中,会中断
参考:https://blog.csdn.net/HideInTime/article/details/117779380
netcat(简称nc)被誉为网络安全界的”瑞士军刀“,一个简单而有用的工具,这里介绍一种使用netcat实现端口转发的方法。
(1)安装ncat
yum install nmap-ncat -y
(2)监听本机 9876 端口,将数据转发到 192.168.172.131的 80 端口,&表示后台运行
ncat --sh-exec "ncat 192.168.172.131 80" -l 9876 --keep-open &