Nginx获取IP地址变量的几种方式

 更新时间:2025年11月10日 11:15:46   作者:海天胜景  
Nginx提供了多种方式来获取和使用IP地址变量,包括使用$remote_addr、$http_x_forwarded_for、real_ip模块以及map指令,下面就来介绍一下获取IP地址变量的几种方式

在Nginx配置中,有时需要使用到IP地址变量,比如在访问日志中记录客户端的IP地址,或者在根据IP地址的不同进行不同的配置处理。Nginx提供了几种方式来获取和使用IP地址变量。

1. 使用$remote_addr变量

$remote_addr是Nginx内置的变量,用来获取客户端的IP地址。这是最直接的方法,适用于大多数情况。

server {
    listen 80;
    server_name example.com;
 
    location / {
        # 使用$remote_addr获取客户端IP
        access_log /var/log/nginx/access.log combined;
    }
}

2. 使用$http_x_forwarded_for变量

如果你的服务器部署在反向代理(如Nginx或HAProxy)后面,客户端的真实IP地址可能会被代理服务器的IP地址所覆盖。在这种情况下,可以使用$http_x_forwarded_for变量来获取原始的客户端IP地址。这个变量通常在HTTP请求头X-Forwarded-For中设置。

server {
    listen 80;
    server_name example.com;
 
    location / {
        # 使用$http_x_forwarded_for获取原始客户端IP
        real_ip_header X-Forwarded-For;
        set_real_ip_from 0.0.0.0/0; # 或者指定具体的代理服务器IP段
        access_log /var/log/nginx/access.log combined;
    }
}

3. 使用real_ip模块设置原始IP地址

如果你在使用反向代理,并且希望在Nginx中直接设置原始IP地址,可以使用real_ip模块。首先确保你的Nginx编译时包含了real_ip模块。

load_module modules/ngx_http_realip_module.so; # 如果是在编译时未包含此模块的话需要取消注释并确保模块路径正确

然后在配置文件中使用:

http {
    real_ip_header X-Forwarded-For; # 指定用于传递原始IP的HTTP头
    set_real_ip_from   0.0.0.0/0;   # 允许所有IP,或者指定代理服务器的IP段
 
    server {
        listen 80;
        server_name example.com;
 
        location / {
            # 现在可以使用$remote_addr获取原始客户端IP
            access_log /var/log/nginx/access.log combined;
        }
    }
}

4. 使用map指令自定义变量

如果你需要根据不同的IP地址应用不同的配置,可以使用map指令来创建自定义的变量。

http {
    map $remote_addr $custom_ip {
        192.168.1.1  "internal"; # 内部IP地址的标识符
        default      "external"; # 其他IP地址的标识符
    }
 
    server {
        listen 80;
        server_name example.com;
 
        location / {
            # 根据自定义的$custom_ip变量应用不同的配置或处理逻辑
            if ($custom_ip = "internal") {
                # 处理内部请求的逻辑
            }
            access_log /var/log/nginx/access.log combined;
        }
    }
}

以上方法可以根据你的具体需求选择使用。如果你在使用反向代理,推荐使用real_ip模块或$http_x_forwarded_for变量来获取原始客户端的IP地址。

到此这篇关于Nginx获取IP地址变量的几种方式的文章就介绍到这了,更多相关Nginx获取IP地址变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用LDAP实现Nginx用户认证的示例

    使用LDAP实现Nginx用户认证的示例

    本文主要使用Nginx和LDAP实现用户认证,通过配置Nginx和安装nginx-auth-ldap模块,可以实现基于LDAP的认证逻辑,下面就来介绍一下,感兴趣的可以了解一下
    2024-12-12
  • nginx日志模块及日志定时切割的方法

    nginx日志模块及日志定时切割的方法

    本篇文章主要介绍了nginx日志模块及日志定时切割的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Nginx 502 bad gateway错误解决的九种方案及原因

    Nginx 502 bad gateway错误解决的九种方案及原因

    一般在访问某些网站或者我们在做本地测试的时候,服务器突然返回502 Bad Gateway Nginx,这种问题相信大家也遇到不少了,下面这篇文章主要给大家介绍了关于Nginx 502 bad gateway错误解决的九种方案及原因,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • nginx利用ctx实现数据共享、修改上下文功能

    nginx利用ctx实现数据共享、修改上下文功能

    这篇文章主要给大家介绍了关于nginx利用ctx实现数据共享、修改上下文功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Nginx0.5.33+PHP5.2.5(FastCGI)搭建胜过Apache10倍的Web服务器

    Nginx0.5.33+PHP5.2.5(FastCGI)搭建胜过Apache10倍的Web服务器

    Nginx 0.5.31 + PHP 5.2.4(FastCGI)搭建可承受3万以上并发连接数,胜过Apache 10倍的Web服务器的第2版,经过了多台服务器的测试。
    2009-10-10
  • Nginx Linux安装部署详细教程

    Nginx Linux安装部署详细教程

    这篇文章主要介绍了Nginx Linux安装部署详细教程,本文通过图文实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Nginx路径重写方式

    Nginx路径重写方式

    这篇文章主要介绍了Nginx路径重写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • nginx控制连接数及访问速率的实现

    nginx控制连接数及访问速率的实现

    本文主要介绍了Nginx中ngx_http_limit_conn_module和ngx_http_limit_req_module模块的使用,用于控制连接数和请求速率,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • Nginx代理缓冲proxy_buffering配置方式

    Nginx代理缓冲proxy_buffering配置方式

    这篇文章主要介绍了Nginx代理缓冲proxy_buffering配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法

    使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法

    linux下通过Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度的配置方法
    2013-06-06

最新评论