nginx学习笔记(3):TCP反向代理基本配置

来源:互联网 发布:mac ps cs6 破解 编辑:程序博客网 时间:2024/06/14 02:27

何谓反向代理

一般来说,反向代理方式是指用代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络中的上游服务器,并将从上游服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外的表现就是一个 Web 服务器。

充当反向代理服务器也是 nginx 的一种常见用法,但一直以来,nginx 并不支持 TCP 协议,从1.90版本起,nginx 增加了 stream 模块用于一般的 TCP 代理和负载均衡。

TCP反向代理基本配置

新增的 ngx_stream_core_module 模块并不会默认安装,需要在编译时通过指定 –with-stream 参数来激活这个模块。

即编译安装nginx时,进入nginx-x.x.x目录后执行以下命令:./configure --with-streammakemake install

安装完毕后,只用对nginx.conf稍作简单的配置就可以实现TCP反向代理了。

官方配置示例如下:

worker_processes auto;error_log /var/log/nginx/error.log info;events {    worker_connections  1024;}stream {    # upstream 块    # upstream 块定义了一个上游服务器的集群,便于反向代理中的 proxy_pass 使用    upstream backend {        # 使用一致性hash算法,根据客户端ip映射到合适的节点        hash $remote_addr consistent;        # server 配置项        # server 配置项指定了一台上游服务器的名字,这个名字可以是域名、IP地址端口、UNIX句柄等        # 其后还可以跟参数 weight、max_fails等        server backend1.example.com:12345 weight=5;        server 127.0.0.1:12345            max_fails=3 fail_timeout=30s;        server unix:/tmp/backend3;    }    upstream dns {       server 192.168.0.1:53535;       server dns.example.com:53;    }    # server 块中的配置项    # listen:监听指定端口    # proxy_pass:将TCP连接及数据收发转向到指定上游服务器    # proxy_timeout:距离上一次成功访问(连接或读写)上游服务器的时间超过了指定时间就判定为超时,断开此连接    # proxy_connect_timeout:nginx连接上游服务器超时的时间    server {        listen 12345;        proxy_connect_timeout 1s;        proxy_timeout 3s;        proxy_pass backend;    }    server {        listen 127.0.0.1:53 udp;        proxy_responses 1;        proxy_timeout 20s;        proxy_pass dns;    }    server {        listen [::1]:12345;        proxy_pass unix:/tmp/stream.socket;    }}

一个简单的应用

应用场景:处于网络1的回射客户端和处于网络2的回射服务端,经由nginx代理转发,实现跨网段通信(nginx所在主机可分别与网络1、网络2连通)。

回射客户端:
这里写图片描述

这里写图片描述

回射服务端:
这里写图片描述

这里写图片描述

nginx配置:
这里写图片描述

这里写图片描述
这个配置表示,当客户端使用 TCP 时,若访问到 nginx 服务器的5555端口时,就会将其转交给上游服务器的3333端口(这里的上游服务器也就是回射服务端)。

测试结果:
启动nginx以及回射服务端、客户端
这里写图片描述

这里写图片描述

这里写图片描述

可以看到,客户端能够成功接收到服务端回射的消息。

0 0
原创粉丝点击