欢迎来访,本站中的文章均为日常工作的记录和总结,写出的每个服务配置都是自己手动配置测试过,有不足之处欢迎指出,谢谢!

Nginx 配置TCP代理

nginx 服务 Mr.c 3999℃ 0评论

  nginx 的功能非常强大,其中作为代理服务器是非常常用的功能,但是之前的nginx代理只能做七层代理,也就说是基于应用层面的代理,TCP层面的代理一般会配合haproxy 来使用,但是自从nginx 1.9 以后就加入了tcp 代理功能,无需其他软件配合即可实现四层代理和七层代理。
  默认情况下nginx 未开启这个功能,tcp代理需要开启模块 with-stream ,增加模块需要重新编译nginx 加参数。
  准备nginx安装包和基本依赖包pcre和openssl
  编译参数如下(–with-stream):

[ root@nginx_install ] ./configure  --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-stream --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2k --with-pcre=../pcre-8.40 --with-pcre-jit --with-ld-opt=-ljemalloc

  这里我是直接安装模块,而且线上也没有什么正在运行的重要业务,如果担心业务受影响的可以采用平滑升级方案。

[ root@nginx_install ] make && make install

如果需要代理的业务较少,也就一两个的情况下直接添加到nginx.conf文件中即可,如果是需要代理的业务较多,比如VPC网络下很多ECS没有规划分配公网IP地址,需要远程控制的时候就相对麻烦,那么配置一个nginx 做代理就是很不错的选择,这样的情况下就建议像配置站点一样通过调用不同conf文件的方式区分。

[ root@nginx_install ] cd /usr/local/nginx/conf
[ root@conf] mkdir proxy

加配置不要被误导了,这个不属于http模块内的,需要配置在http 括号外层

[ root@conf] vim nginx.conf
............
  open_file_cache max=1000 inactive=20s;
  open_file_cache_valid 30s;
  open_file_cache_min_uses 2;
  open_file_cache_errors on;

  include vhost/*.conf;
}

include proxy/*.conf;

接下来在新建的proxy目录下创建conf 文件,和创建站点conf文件类似

[ root@proxy] vim test.conf

stream{
    upstream testssh{
        hash $remote_addr consistent;
        server  192.168.31.3:22 max_fails=3 fail_timeout=10s;  
    }
    server{
        listen 33301;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;
        proxy_pass testssh;
    }
}

  这里就是配置的监听本地33301端口,代理服务器192.168.31.3的22端口,那么对于没有公网IP的服务器我们就可以通过这台有公网IP的服务器33301端口进行登录。

转载请注明:菜鸟运维 » Nginx 配置TCP代理

喜欢 (2)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 牛叉,连HTTP代理都支持了。用iptables转发会不会简单点?
    小z博客2017-06-28 13:11 回复
    • 当然我那个需求来说,iptables转发更简单,但是主要为了测试四层代理功能。
      Mr.c2017-06-28 13:32 回复
  2. 只能说,进来的第一眼就感觉不管是界面排版还是风格,都蛮符合我的口味,重点是内容值得取阅! 我的站点 www.okay686.cn 能否来个友链?你的友链已经做好!
    老七2017-10-27 09:20 回复
    • 共同学习,友链已加。
      Mr.c2017-10-27 12:50 回复