Nginx 4层代理获取客户端真实IP

架构

image

4层代理配置

stream {
    upstream backend {
        server 10.4.7.30:80;
    }
 
    server {
        listen 80;
        proxy_pass backend;
        proxy_connect_timeout 1s;
        proxy_protocol on ;  # 主要是把这个参数开上
    }
}

后端nginx配置

注意这种方式客户端不能够直接访问后端服务器。

conf.d]# cat mywebsite.conf 
server {
  listen 81 proxy_protocol;
  root /www;
 

需要修改下日志格式。

http {
    log_format  main  '$proxy_protocol_addr  $remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_real_ip" "$http_x_forwarded_for"';
                   
$proxy_protocol_addr  # 这个变量获取到了客户端的真实IP地址。

客户端的真实IP地址。

image

posted @   Gshelldon  阅读(252)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示