關(guān)于【端口轉(zhuǎn)發(fā)】這篇文章挺全面的,共有8種場景,研究了一下很多時候還是挺方便得。
但是對于我來說經(jīng)常用到的就是服務(wù)器只提供了本地端口服務(wù)器,想要遠(yuǎn)程訪問很不方便。比如部署了“127.0.0.1:3306”的mysql服務(wù),我只能用命令行了。
我又不想修改測試環(huán)境,畢竟要和發(fā)布環(huán)境保持一致。所以用端口轉(zhuǎn)發(fā)是個好方案。(ps:mysql那個我使用【adminer】也很方便。)
執(zhí)行
ssh -C -f -N -g -L 3306:127.0.0.1:3306 admin@192.168.1.10 -p 22
就能將下面圖片所示的mysql端口轉(zhuǎn)發(fā)為對外能訪問的端口,可以愉快地用Navicat了。
上面命令可解釋為ssh -C -f -N -g -L 監(jiān)聽端口:目標(biāo)IP:目標(biāo)端口 用戶名@轉(zhuǎn)發(fā)服務(wù)器IP -p 轉(zhuǎn)發(fā)服務(wù)器端口
,可參考【端口轉(zhuǎn)發(fā)】的更多用法。
由于只需要轉(zhuǎn)發(fā)功能,去掉http模塊(加入-s選項),這樣編譯出來的Nginx體積很小,只有轉(zhuǎn)發(fā)功能可用額。
./configure --prefix=/usr/local/nginx --with-stream --without-http
make 提取objs/nginx即可
user root;
worker_processes auto;
events {
use epoll;
worker_connections 1024;
}
stream {
server {
listen 3000; # 監(jiān)聽3000的tcp連接
proxy_pass 127.0.0.1:33306; # 轉(zhuǎn)發(fā)33306端口
# proxy_pass unix:/var/lib/mysql/mysql.socket; # 可轉(zhuǎn)發(fā)unix文件連接
}
server {
listen 3001 udp; # 監(jiān)聽3001的udp端口
proxy_pass 127.0.0.1:3001;
proxy_responses 1;
}
}
mkdir logs conf
vim conf/nginx.conf # 寫入步驟2的配置
sudo ./nginx -p . # 指定前綴路徑即可
執(zhí)行命令
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=4430 connectaddress=192.168.1.10 connectport=443
表示訪問127.0.0.1:4430
會轉(zhuǎn)發(fā)到192.168.1.10:443
上,下圖表示執(zhí)行成功。
執(zhí)行netsh interface portproxy show all
可以查看當(dāng)前已有的端口轉(zhuǎn)發(fā)的記錄。
執(zhí)行netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=4430
可以刪除已有端口轉(zhuǎn)發(fā)記錄。
端口轉(zhuǎn)發(fā)真的很實用額,我看了那8中通過ssh進(jìn)行的端口轉(zhuǎn)發(fā),都是實用干貨啊。與之對應(yīng)的是端口映射,以前用過
源地址轉(zhuǎn)換
和目的地址轉(zhuǎn)換
也是很使用的功能額,只是我用的比較少罷了。