Nginx 四层反代 QUIC 如何传递客户端 IP

dabao · 昨天 14:18 · 619 次点击

使用 nginx 的四层代理监听 443 端口,反代后端 6443 端口站点。 通过http2可以正常获取到客户端 IP ,通过 h3quic连接则无法获取到真实的客户端 IP ,只能获取到 127.0.0.1 。

请问各位大佬,在保持使用四层反代的前提下,如何配置可以通过quic获取到客户端 IP 。

使用 quic 连接获取到的 IP

REMOTE_ADDR: 127.0.0.1
HTTP_CLIENT_IP: 未设置
HTTP_X_FORWARDED_FOR: 未设置
HTTP_X_REAL_IP: 未设置
HTTP_FORWARDED: 未设置
HTTP_FORWARDED_FOR: 未设置
HTTP_X_FORWARDED: 未设置

四层 stream 配置

map $ssl_preread_server_name $name {
    default default_backend;
}

upstream default_backend {
    server 127.0.0.1:6443; # 站点
}

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

站点配置

server
{
    listen 80;
    listen 6443 ssl  proxy_protocol ;
    listen 6443 quic reuseport;
		
    http2 on;
    server_name abc.com www.abc.com;
    
    index index.php index.html;
    root /wwwroot/abc.com;
    
    set_real_ip_from 127.0.0.1;
    real_ip_header proxy_protocol;
    
    ...
}
举报· 619 次点击
登录 注册 站外分享
5 条回复  
dabao 楼主 初学 昨天 14:41
``` nginx version: nginx/1.27.1 built by gcc 12.2.0 (Debian 12.2.0-14) built with OpenSSL 1.1.1q 5 Jul 2022 TLS SNI support enabled configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_f_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-http_auth_request_module --add-module=/www/server/nginx/src/ngx_http_substitutions_filter_module-master --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --with-http_v3_module ```
Showfom 小成 昨天 15:10
你编译的时候少了这个模块 https://nginx.org/en/docs/stream/ngx_stream_realip_module.html
lambdaq 小成 昨天 15:15
我估计,四层反代 原理上无法把这个值带过来。。。
dabao 楼主 初学 昨天 15:31
@Showfom 这个模块也无法通过 quic 连接传递客户端 ip
dabao 楼主 初学 昨天 15:32
@lambdaq 通过目前查到的资料来看,还不支持通过 quic 传递客户端 ip
返回顶部