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
- nginx学习笔记(3):TCP反向代理基本配置
- nginx反向代理基本配置
- nginx反向代理基本配置
- Nginx反向代理基本配置
- nginx 学习笔记--Nginx安装及反向代理配置(简述)
- nginx TCP 反向代理
- nginx tcp 反向代理
- 最基本的nginx反向代理配置
- Nginx反向代理搭建配置笔记
- nginx初步学习-配置反向代理
- Nginx 反向代理学习及实例笔记
- nginx反向代理配置
- nginx反向代理配置
- nginx反向代理配置
- Nginx 配置反向代理
- nginx反向代理配置
- nginx反向代理配置
- Nginx反向代理配置
- cordova + ionic前端框架 js和android ios原生(native)交互
- 软件工程-项目总结——项目架构
- 毕业设计笔记--Ubuntu 14.0.4下使用Android Studio编译Mapbox(为以后节省大量时间)
- 【OI做题记录】【BZOJ】【HAOI2006】旅行comf
- 2016.12.11 个人计划
- nginx学习笔记(3):TCP反向代理基本配置
- eclipse开发Mapreduce初
- [Canvas画图系列]Canvas基本概念_01
- 【鸟哥Linux】Linux的文件权限与目录配置
- break和continue
- Shell中的文件重定向
- 实时体重检测
- Spring MVC 初识
- Mirantis OpenStack Fuel8.0离线安装(MOS8.0本地源)