使用Nginx代理本地TCP端口
前言
为什么会需要使用Nginx代理本地TCP端口呢?
是因为有时候DDNS-GO域名更新比较慢,导致我的Windows设备即使启动了,也要在几分钟后等它更新IPv6地址后才能访问。中间可能也就几分钟时间,但是就是不想等。
因为家里有Ubuntu服务器是24小时开机的,就让它负责起转发本地Windows远程桌面的任务,这样只要Windows电脑启动,直接就可以进行访问。
这篇文章介绍一下具体操作。
前提
进行以下操作前,需要确保:
局域网可以正常进行连接
服务器安装DDNS-GO并正确解析IPv6
此时,现有环境为:
ubuntu server的ddns-go服务正确解析至:rdp.xxx.com
操作
安装Nginx
根据自己设备进行安装,ubuntu server只需使用以下命令即可:
1
2apt install nginx
apt install libnginx-mod-stream #stream模块,必须安装配置
/etc/nginx/nginx.conf
文件在上述文件中添加以下内容:
1
2
3
4
5
6
7
8
9
10#在http内容前加载
load_module modules/ngx_stream_module.so;
#添加stream代理设置,与http是平级的,不要放错位置
stream {
server {
listen [::]:3389; #外部端口
proxy_pass 10.0.0.50:3389; #需要代理的端口
}
}注意:由于访问是通过IPv6进行访问的,因此代理的协议也就必须是ipv6:
listen [::]:3389
。应用
通过命令
nginx -t
确保配置正确并重新加载systemctl restart nginx
。
测试
然后就可以通过 rdp.xxx.com:3389
来进行远程连接了。
写文章前体验了一下,使用Nginx进行代理对比直接在Windows上使用DDNS-GO解析直连稍微有一点点延迟,可以说是忽略不计。
最后
这两天其实尝试了好几次,很多网上的方式已经过时,而且增加一些额外的配置就会导致无法连接,目前是不加任何配置最原始的就已经可以了。
最大的问题就是代理的是IPv6的地址,当时忘记考虑这一部分,导致走了点弯路。
会了这种方法,代理其他的端口,或者说UDP协议等都不成问题,可玩性也会大大提升。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Forever Study!
评论