使用 Nginx 四层代理配置指南

本文将探讨如何使用 Nginx 配置四层代理,并解释提供的配置示例。

四层代理简介

四层代理工作在 OSI 模型的传输层,根据数据包的 IP 地址和端口号进行转发。相比七层代理,四层代理效率更高,但无法解析应用层协议内容。

配置示例解析

stream {

map $ssl_preread_server_name $name {
default backend;
}

upstream backend {
server 127.0.0.1:7443;
}

server {
listen 443 reuseport so_keepalive=on;
proxy_pass $name;
ssl_preread on;
proxy_protocol on;
}

#server {
# listen 443 udp reuseport;
# proxy_responses 1;
# proxy_timeout 1s;
# proxy_bind $remote_addr transparent;
# proxy_pass $name;
#}

}

http {

…………………

vhost.conf

listen 127.0.0.1:7443 ssl proxy_protocol;

real_ip_header proxy_protocol;
}

配置详解

  1. stream 模块: 声明使用 stream 模块进行四层代理配置。
  2. map 指令: 定义一个 map 块,根据 $ssl_preread_server_name 变量的值映射到不同的 upstream 组。这里默认映射到名为 backend 的组。
  3. upstream backend: 定义一个名为 backend 的 upstream 组,其中包含一个 server,地址为 127.0.0.1:7443
  4. server: 定义一个 server 块,监听 443 端口,并开启 reuseportso_keepalive 选项。
  5. proxy_pass: 将请求转发到 $name 变量指定的 upstream 组,即 backend 组。
  6. ssl_preread on: 开启 SSL 预读取功能,以便在转发之前获取客户端的 SNI 信息。
  7. proxy_protocol on: 开启 Proxy Protocol 支持,以便后端服务器获取客户端的真实 IP 地址。
  8. 注释掉的 server 块: 这是一个使用 UDP 协议的四层代理配置示例,可以根据需要启用。
  9. http 模块: 定义 HTTP 服务器的配置。
  10. vhost.conf: 定义虚拟主机配置。
  11. listen: 监听 127.0.0.1:7443 地址,并开启 SSL 和 Proxy Protocol 支持。
  12. real_ip_header: 指定使用 Proxy Protocol 获取客户端真实 IP 地址。

总结

通过以上配置,Nginx 可以实现四层代理功能,并将请求转发到后端服务器。根据实际需求,您可以调整配置参数,例如 upstream 组的 server 列表、监听端口等。

注意:

  • 此配置示例仅供参考,实际配置可能需要根据具体环境进行调整。
  • 建议您查阅 Nginx 官方文档了解更多配置选项和细节。