ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

在raspbian上配置Nginx进行TCP/UDP端口转发

2021-06-14 20:00:16  阅读:319  来源: 互联网

标签:UDP etc TCP 3389 raspberrypi Nginx tcp nginx


文章目录

引言

自从Nginx 1.9 以后无需其他软件配合,通过stream模块就可以实现了TCP代理功能,即可通过访问该服务器的指定端口,Nginx就可以充当端口转发的作用将请求该端口的所有流量都会转发到目标服务器,同时获取目标服务器的返回数据并返回给请求者。以下对nginx代理TCP进行配置。

1 查看Nginx版本

1.1 打开终端

 1. Ctrl+Alt+T打开终端

在这里插入图片描述

1.2 查看版本信息

查看版本信息,检查是否编译时带with-stream参数

 2. 终端输入:sudo nginx -V |grep with-stream

我的版本是1.14.2,有with-stream参数,可以代理TCP协议
在这里插入图片描述

2 配置Nginx的TCP代理

2.1 修改主配置文件,添加stream目录

  1. 进入Nginx文件目录
    pi@raspberrypi:~ $ cd /etc/nginx/
    
  2. 备份一份nginx.conf
    pi@raspberrypi:/etc/nginx $ sudo cp -a nginx.conf{,_$(date +%F)}
    
  3. 编辑nginx.conf
    pi@raspberrypi:/etc/nginx $ sudo nano nginx.conf
    
  4. 在打开的nginx.conf底部添加如下内容:
    include /etc/nginx/tcp.d/*.conf;
    

在这里插入图片描述

  1. Ctrl + O Enter 保存
  2. Ctrl + X 退出

2.2 添加TCP转发配置

  1. 创建tcp.d目录
    pi@raspberrypi:/etc/nginx $ sudo mkdir tcp.d
    
  2. 进入tcp.d目录
    pi@raspberrypi:/etc/nginx $ cd tcp.d
    
  3. 创建conf文件
     pi@raspberrypi:/etc/nginx/tcp.d $ sudo nano openldap.conf 
    
  4. 输入如下内容:
  • 注:(以下内容以目标服务器IP地址为8.8.8.8 端口号为 389为例,运用时记得修改为自己的IP和端口)
 stream{
    upstream tcpssh{
        hash $remote_addr consistent;
        server 8.8.8.8:389 max_fails=3 fail_timeout=10s;
    }
    server{
        listen 3389;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;
        proxy_pass tcpssh;
    }
}

“upstream tcpssh”:转发的目的地址和端口等设置;其中tcpssh为自定义.
“server”:提供转发的服务,即监听端口为3389,访问localhost:3389,会跳转至代理"tcpssh"指定的转发地址。
即会将流量相应转发到8.8.8.8服务器的389端口上。

2.3 检查配置文件

pi@raspberrypi:/etc/nginx/tcp.d $ sudo nginx -t -c /etc/nginx/nginx.conf

在这里插入图片描述

2.4 重启Nginx服务

  1. 重启Nginx服务
    pi@raspberrypi:/etc/nginx/tcp.d $ sudo nginx -s reload
    
  2. 查看Nginx是否启动
    pi@raspberrypi:/etc/nginx/tcp.d $ systemctl status nginx.service
    

在这里插入图片描述

  1. 查看3389端口是否在监听
    pi@raspberrypi:~ $ sudo netstat nap |grep 3389
    

在这里插入图片描述

3 客户端测试

我用的是虚拟机上的Ubuntu

  1. Ctrl+Alt+T打开终端
  2. 在终端输入
    telnet 192.168.1.101 3389
    
    注意:
    	192.168.1.101:为服务器主机IP要根据自己的服务器IP地址确定
    		- 可通过在终端输入 ifconfig 查看
    		- 找到
    		wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500 
    					inet 192.168.1.101 netmask 255.255.255.0  broadcast ......
    	以上IP地址为192.168.1.101
    	3389:就是上面设置的监听端口3389
    
    在终端输入 telnet 192.168.1.101 3389后显示:
    china@ubuntu:~$  telnet 192.168.1.101 3389
    Trying 192.168.1.101 3389...
    Connected to 192.168.1.101.
    Escape character is '^]'.
    
    出现Connected to 192.168.1.101.则说明连接成功

至此配置完成。

END

如果出现
telnet: Unable to connect to remote host: Network is unreachable
在这里插入图片描述
那就是虚拟机没网,可以参考我的这篇文章进行配置后再次尝试。
VMware虚拟机上Ubuntu无网络解决方法

参考文章https://blog.51cto.com/moerjinrong/2287680

标签:UDP,etc,TCP,3389,raspberrypi,Nginx,tcp,nginx
来源: https://blog.csdn.net/qq_44904434/article/details/117905839

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有