L112

是基于TCP

POST_ACCEPT阶段 在建立连接后所做的事情

PREACCESS阶段  limit_conn 限流 与HTTP类似

ACCESS阶段 类似HTTP模块用于控制访问权限

SSL阶段  ssl请求

PREREAD阶段 ssl_preread 从头部取信息

CONTENT阶段 return,stream_proxy

LOG阶段 类似http log阶段

Syntax: stream { ... } 提供指定流服务器指令的配置文件上下文
Default:
Context: main
Syntax: server { ... }
Default:
Context: stream
Syntax: listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
Default:
Context: server

模块 ngx_stream_return_module

Syntax: return value;
Default:
Context: server

需要编译进Nginx

http://nginx.org/en/docs/stream/ngx_stream_core_module.html

可以用 telnet 192.168.1.1 10004 方式查看数据

  1. worker_processes auto;
  2.  
  3. error_log /var/log/nginx/error.log info;
  4.  
  5. events {
  6. worker_connections ;
  7. }
  8.  
  9. stream {
  10. upstream backend {
  11. hash $remote_addr consistent;
  12.  
  13. server backend1.example.com: weight=;
  14. server 127.0.0.1: max_fails= fail_timeout=30s;
  15. server unix:/tmp/backend3;
  16. }
  17.  
  18. upstream dns {
  19. server 192.168.0.1:;
  20. server dns.example.com:;
  21. }
  22.  
  23. server {
  24. listen ;
  25. proxy_connect_timeout 1s;
  26. proxy_timeout 3s;
  27. proxy_pass backend;
  28. }
  29.  
  30. server {
  31. listen 127.0.0.1: udp reuseport;
  32. proxy_timeout 20s;
  33. proxy_pass dns;
  34. }
  35.  
  36. server {
  37. listen [::]:;
  38. proxy_pass unix:/tmp/stream.socket;
  39. }
  40. }

代码示列

  1. stream {
  2. log_format basic '$remote_addr [$time_local] '
  3. '$protocol $status $bytes_sent $bytes_received '
  4. '$session_time';
  5.  
  6. error_log logs/stream_error.log debug;
  7. access_log logs/stream_access.log basic;
  8. server {
  9. listen proxy_protocol;
  10. return '10002 server get ip: $remote_addr!\n';
  11. }
  12.  
  13. server {
  14. listen proxy_protocol;
  15. return '10003 server get ip: $remote_addr!\n';
  16. }
  17.  
  18. server {
  19. #listen ;
  20. listen proxy_protocol;
  21. set_real_ip_from 127.0.0.1;
  22. allow 202.112.144.236;
  23. deny all;
  24. return '10004 vars:
  25. bytes_received: $bytes_received
  26. bytes_sent: $bytes_sent
  27. proxy_protocol_addr: $proxy_protocol_addr
  28. proxy_protocol_port: $proxy_protocol_port
  29. remote_addr: $remote_addr
  30. remote_port: $remote_port
  31. realip_remote_addr: $realip_remote_addr
  32. realip_remote_port: $realip_remote_port
  33. server_addr: $server_addr
  34. server_port: $server_port
  35. session_time: $session_time
  36. status: $status
  37. protocol: $protocol
  38. ';
  39. }
  40. }

Nginx 4层反向代理的更多相关文章

  1. Nginx 七层反向代理

    目录 1.代理 2.正向代理 3.反向代理 4.Nginx 反向代理 5.Nginx 反向代理相关指令介绍 ①.listen ②.server_name ③.location ④.proxy_pass ...

  2. Nginx七层反向代理和负载均衡

    1.介绍 1.1 Nginx不仅是一个出色的web软件,其七层代理和负载均衡也是相当出色.Nginx做前端代理,当用户请求服务时,可以根据url进行判断,然后分配到不同的后台webserver上. 1 ...

  3. 搭建Nginx七层反向代理

    基于https://www.cnblogs.com/Dfengshuo/p/11911406.html这个基础上,在来补充下七层代理的配置方式.简单理解下四层和七层协议负载的区别吧,四层是网络层,负载 ...

  4. Nginx 部署、反向代理配置、负载均衡

    Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...

  5. 【转】Nginx服务器的反向代理proxy_pass配置方法讲解

    [转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的, ...

  6. nginx是一个反向代理的软件

    nginx只是一个反向代理的软件,和语言无关,理论上支持任何Web平台,当然http://Asp.net也不例外,http://51aspx.com就是http://Asp.net开发的,前端暴漏的是 ...

  7. Nginx+Tomcat实现反向代理及动静分离

    Nginx+Tomcat实现反向代理及动静分离 时间 2014-07-07 15:18:35  51CTO推荐博文 原文  http://yijiu.blog.51cto.com/433846/143 ...

  8. Nginx 之六: Nginx服务器的反向代理功能

    一:Nginx作为正向代理服务器: 1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代 ...

  9. 五、Nginx多Server反向代理配置

    Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了. server_name的匹配顺序 Nginx中的s ...

随机推荐

  1. git创建新分支

    1.创建本地分支 git branch 分支名,例如:git branch 2.0.1.20120806 注:2.0.1.20120806是分支名称,可以随便定义.   2.切换本地分支 git ch ...

  2. Windows Community Toolkit 3.0 - CameraPreview

    概述 Windows Community Toolkit 3.0 于 2018 年 6 月 2 日 Release,同时正式更名为 Windows Community Toolkit,原名为 UWP ...

  3. 内置函数二: map sorted filter

    -----------生活里没有奇迹,大部分的时候奇迹是你自己创造的. # -------------------------------------------------------------- ...

  4. configure: error: cannot guess build type; you must specify one解决方法

    原文地址:https://blog.csdn.net/hebbely/article/details/53993141 1.configure: error: cannot guess build t ...

  5. OO生存指.....抱歉无法生存

    还记得前三次的设计策略:星期二之前实现功能,星期三找一下可能出现的小bug. 这三次以及变成了:星期二之前能跑出来就行. 总体来说设计策略是:先让几个线程能够顺利运行,再开始实现功能. 在接触到多线程 ...

  6. Nginx监控运维

    Nginx是一个开源.免费.高性能的HTTP和反向代理服务器,也可以用于IMAP/POP3代理服务器.充分利用Nginx的特性,可以有效解决流量高并发请求.cc攻击等问题. 本文探讨了电商场景下Ngi ...

  7. ajax成功后XML 解析错误:格式不佳

    就是Ajax发送请求后,意图回显数据时会出现这个错误,貌似chrome浏览器不会报用火狐能看到: 可能的原因有两个,就是后台应该返回一个json格式的字符串,但是你返回的是浏览器看不懂的,也就是返回格 ...

  8. hdu5943素数间隙与二分匹配

    题意: 给出n和s,匹配(s+1,s+2,s+3......s+n)和(1,2,3,4,5........n)让(s+x)%x==0,判断是否有解 思路: 先用程序跑一边,发现1到1e9得素数间隙小于 ...

  9. Jury Meeting CodeForces - 854D (前缀和维护)

    Country of Metropolia is holding Olympiad of Metrpolises soon. It mean that all jury members of the ...

  10. Golang开发工具LiteIDE使用方法整理

    安装 参考github的说明 添加GOPATH 创建workspace 创建新文件 运行程序 Liteide中运行程序有两种方式: FR(FileRun)是编译并运行单个文件,可以使用Shift + ...