服务器 > 服务器 > Linux

Nginx中IP地址透传的应用实现

21人参与 2025-12-05 Linux

一、简介

nginx的ip地址透传是一个在网络传输中保留和传递源ip地址和目标ip地址的功能。ip透传,即ip透明传输,是指在网络传输过程中,源ip地址和目标ip地址能够完整地保留和传递,中间的网络设备(如代理服务器、负载均衡器等)不会修改这些ip地址。

二、应用场景

三、配置参数

server {
  listen 80;
  server_name example.com;
  location / {
  # 用于记录客户端的真实ip地址。
  proxy_set_header x-real-ip $remote_addr;
  # 用于记录经过的代理服务器的ip地址列表,最左边的为客户端ip,右边为经过的代理服务器ip
  proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
  # 用于记录原始请求的协议(http或https)
  proxy_set_header x-forwarded-proto $scheme;
  }
}

四、简单实践

1、角色分配

角色ip系统
client10.0.0.15rocky9
proxy server10.0.0.114ubuntu24
real server10.0.0.118openeuler

2、未透传实践

默认情况下,后端真实服务器无法获取真实客户端ip

查看 proxy server 配置 /etc/nginx/conf.d/vhost.conf

修改后端 real server 配置 /etc/nginx/default.d/simple.conf

location / {
  return 200 "客户端:\${remote_addr}---真实ip: \${http_x_real_ip}----地址列
表:\${http_x_forwarded_for}\n";
}

重启 nginx 并查看效果,后端服务器只能获取代理服务器ip

3、透传配置

修改代理服务器配置 /etc/nginx/conf.d/vhost.conf ,透传真实客户端ip,location块增加   proxy_set_header x-real-ip \$remote_addr; 及 proxy_set_header x-forwarded-for \$proxy_add_x_forwarded_for;

server {
  listen 80 default_server;
  server_name ubuntu.test.com;
  root /data/server/nginx/web1;

  location /static {
  rewrite ^/static(.*)\$ /index.html break; # 重写url
  proxy_pass http://10.0.0.118;
  proxy_set_header host "openeuler.test.com";

  # 将客户端ip追加请求报文中x-real-ip,记录客户端的真实ip地址。
  proxy_set_header x-real-ip \$remote_addr;
  # 将客户端ip追加请求报文中x-forwarded-for首部字段
  proxy_set_header x-forwarded-for \$proxy_add_x_forwarded_for;
  }
}

4、测试结果

重启代理服务器nginx,客户端测试结果

后端服务器能获取客户端ip地址

到此这篇关于nginx中ip地址透传的应用实现的文章就介绍到这了,更多相关nginx ip地址透传内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Linux中替换某个目录下所有文件中的特定字符串的方法

12-05

Nginx Mirror模块实现流量镜像的示例代码

12-05

Linux中配置DNS全过程

12-05

在Linux上搭建本地Docker Registry并实现远程连接过程

12-05

Ubuntu虚拟机配置静态IP的流程步骤

12-05

redhat服务器更换为centos yum源方式

12-05

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论