Nginx 配置TCP代理

Nginx 配置TCP代理

nginx 的功能非常强大,其中作为代理服务器是非常常用的功能,但是之前的nginx代理只能做七层代理,也就说是基于应用层面的代理,TCP层面的代理一般会配合haproxy 来使用。但是自从nginx 1.9 以后通过stream模块实现了tcp 代理功能,无需其他软件配合即可实现四层代理和七层代理,即:访问该服务器的指定端口,nginx就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。nginx的TCP代理功能跟nginx的反向代理不同的是:请求该端口的所有流量都会转发到目标服务器,而在反向代理中可以细化哪些请求分发给哪些服务器;另一个不同的是,nginx做TCP代理并不仅仅局限于WEB的URL请求,还可以转发如memcached、MySQL等点到点的请求

环境

ip 主机名 端口 说明
192.168.1.101 node1 3389 nginx服务器
192.168.1.102 node2 ~ 客户端
8.8.8.8 ~ 389 目标服务器

1.安装nginx服务

1.1 安装nginx

默认安装stream模块,我写文档时nginx版本为1.14.0
参考:RHEL/CentOS 安装 nginx

1.2 对于已经安装nginx的,检查是否编译时带with-stream参数

[[email protected] ~]# nginx -V |grep with-stream

有with-stream参数,可以代理tcp协议

2 配置nginx的tcp代理

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

stream不属于http模块内的,需要配置在http 括号外层

[[email protected] ~]# cd /etc/nginx/
[[email protected] ~]# cp -a nginx.conf{,_$(date +%F)}
[[email protected] ~]# vim nginx.conf
# 最后追加如下内容
# tcp/ip proxy
include /etc/nginx/tcp_proxy.d/*.conf;

2.2 添加tcp转发配置

[[email protected] ~]# mkdir tcp_proxy.d
[[email protected] ~]# cd tcp_proxy.d

在新建的 tcp_proxy.d 目录下创建 conf 文件新建一个 tcp 配置,例如我转发到IP为8.8.8.8的389端口

[[email protected] ~]# vim openldap.conf
stream{
    upstream testssh{
        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 testssh;
    }
}

这里就是配置的监听本地3389端口,会将流量相应转发到8.8.8.8服务器的389端口上

测试配置文件是否正确

[[email protected] ~]# nginx -t -c /etc/nginx/nginx.conf
[[email protected] ~]# nginx -t -c /etc/nginx/tcp_proxy.d/openldap.conf

2.3 启动nginx服务

启动nginx服务

[[email protected] ~]# systemctl start nginx.service

查看是否启动

[[email protected] ~]# systemctl status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2018-09-29 11:34:01 CST; 5h 37min ago
     Docs: http://nginx.org/en/docs/
 Main PID: 26114 (nginx)
   CGroup: /system.slice/nginx.service
           ├─26114 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─26115 nginx: worker process

Sep 29 11:34:01 node1 systemd[1]: Starting nginx - high performance web server...
Sep 29 11:34:01 node1 systemd[1]: Started nginx - high performance web server.
[[email protected] ~]# 

3 客户端配置

3.1 测试连接目标端口:

[[email protected] ~]# telnet 192.168.1.101 3389
Trying 192.168.1.101...
Connected to 192.168.1.101.
Escape character is ‘^]‘.

出现"Connected to 192.168.1.101",说明连接成功
测试完成,"Ctrl+C"结束

3.2 相关业务软件配置

把要连接8.8.8.8:389的配置改为nginx服务器ip(192.168.1.101),及代理端口3389。

如果业务没有出现问题的话,则说明已经配置完成了

END

原文地址:http://blog.51cto.com/moerjinrong/2287680

时间: 2024-08-29 16:09:51

Nginx 配置TCP代理的相关文章

nginx配置反向代理概述

一.nginx反向代理:Web服务器的调度器 1.反向代理(Reverse Proxy)方式是指以代理服务器来接受客户端的连接请求,然后将请求转发给网络上的web服务器(可能是apache.nginx.tomcat.iis等),并将从web服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个服务器. 图上可以看出:反向代理服务器代理网站Web服务器接收Http请求,对请求进行转发.而且nginx作为反向代理服务器可以根据用户请求的内容把请求转发给后端不同的web服务器,例如静

CentOS 7 安装 Nginx 配置反向代理

Linux使用Nginx Yum存储库上安装Nginx,适用于Red Hat Enterprise Linux和CentOS系统. 1.添加设置Nginx Yum存储库 在CentOS中首次安装Nginx时,需要添加Nginx软件包,使用以下命名,添加安装 sudo yum install yum-utils 设置Yum存储库,请创建/etc/yum.repos.d/nginx.repo配置文件,配置内容如下 [nginx-stable] name=nginx stable repo baseu

Nginx 配置反向代理和负载均衡

反向代理 客户端 A 出于某种原因(如 GFW)无法访问服务器 B,但它能访问服务器 C,服务器 C 能访问服务器 A,那么客户端 A 可通过服务器 C 来访问服务器 B.此时服务器 C 就是一个代理服务器(即正向代理). 首先将请求发送到服务器 C,服务器 C 将请求转发到服务器 B 并接收服务器 B 返回的响应,最后将响应返回给客户端 A. 客户端 A 请求某项服务器 B 上没有的资源,但服务器 C 上有此资源,服务器 B 请求服务器 C 上的资源,并将它返回给客户端 A.此时服务器 B 即

nginx配置反向代理或跳转出现400问题处理记录

午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上服务器进行测试查看,打开nginx与ugwsi日志与配置,发现后端服务日志记录正常,而测试站点的访问日志有7百多M(才运行两三天没几个访问,几M的话才是正常现象),在浏览器里直接访问后端服务接口也正常没有问题(我们的服务器软件架构是微服务架构,将很多模块分拆后分别部署,前端是一个纯HTML站点,通过

nginx配置反向代理支持session

Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意:今天遇到了这样一个问题,tomcat中路径"host/web1",nginx中直接"host/"代理,这时候session就无法正常进行了. 问题描述: 登录后. 跳转http://127.0.0.1:8080/api/index.do 可以正常访问 nginx 反向代理 proxy_pass  http://192.168.1.12:8080/api/ 登录之后跳转   http://api.

nginx 配置反向代理(Apache+nginx)

nginx 由于其高效的并发处理能力,而开始被越来越多的人接受和认可,现在很多网站已经完全用nginx代替apache来处理静态 页面,但是动态页面的处方面,apache还是有着自己独到之处的. 下面说下何为反向代理,以及为何进行反向代理.按照百科的介绍:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器.说得简明点

nginx配置反向代理和负载均衡

一.反向代理 说明:应该有一个nginx服务器有多个应用服务器(可以是tomcat),本文使用一台虚拟机,安装一个nginx,多个tomcat,来模拟 upstream tomcats{ server 192.168.25.148:8080; server 192.168.25.148:8081; } server { listen 80; server_name tomcat.taotao.com; #charset koi8-r; #access_log logs/host.access.l

nginx配置反向代理示例

环境: nginx1:192.168.68.41 tomcat1:192.168.68.43 tomcat2:192.168.68.45 nginx安装网上很多教程,我是用yum安装的. 配置nginx: vim /etc/nginx/conf.d/default.conf 内容: #负责压缩数据流 gzip on; gzip_min_length 1000; gzip_types text/plain text/css application/x-javascript; #设定负载均衡的服务器

nginx配置-反向代理

续:nginx安装配置 开启 nginx 请求日志 同时解开http模块如下部分注释 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log