如何正确使用nginx-real-ip?

一、nginx-real-ip是什么?

nginx-real-ip是nginx的一个模块,可以在反向代理服务器和后端服务器之间传递客户端真实的IP地址,从而方便服务器做进一步的操作。

在默认情况下,当使用nginx等反向代理服务器时,服务器会认为请求来自于代理服务器IP地址,而不是客户端的IP地址。这样,当处理日志、检查黑名单等功能时,就会出现问题。因此,使用nginx-real-ip就可以进行客户端真实IP地址的获取。

二、如何安装nginx-real-ip模块?

在安装nginx之前,需要确保已经安装了pcre-devel和openssl-devel,否则将无法成功安装。

# 下载nginx-real-ip模块
wget https://github.com/flant/nginx-http-rdns/archive/v0.4.3.tar.gz

# 解压
tar zxvf v0.4.3.tar.gz

# 下载nginx
wget https://nginx.org/download/nginx-1.18.0.tar.gz

# 解压并进入目录
tar zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

# 配置nginx,并添加nginx-real-ip模块
./configure --with-http_ssl_module --add-dynamic-module=../nginx-http-rdns-0.4.3

# 编译并安装
make && make install

三、如何配置nginx-real-ip模块?

在nginx的配置文件中,需要添加如下代码:

http {
    # ...
    real_ip_header X-Real-IP;
    set_real_ip_from 172.0.0.0/8;
    # ...
}

其中:

real_ip_header:设置要获取客户端真实IP地址的HTTP头

set_real_ip_from:设置代理服务器IP地址

四、如何测试nginx-real-ip模块?

可以通过访问含有real-ip的测试页面进行测试。首先,需要在nginx的配置文件中添加如下代码:

server {
    listen 80;
    server_name test.com;
 
    location / {
        add_header X-Real-IP $remote_addr;
        return 200 'Hello World!';
    }
}

然后,可以使用curl命令测试:

curl -H "Host: test.com" -H "X-Forwarded-For: 1.2.3.4" http://127.0.0.1/
Hello World!

通过上面的测试,可以从返回的内容中看到real-ip获取到了客户端的真实IP地址。

五、nginx-real-ip的其他用途

除了获取客户端真实IP地址外,nginx-real-ip还可以用于:

防CC攻击:可以根据客户端IP地址进行限制或封锁,从而保护网站的安全。

防黑名单:可以根据IP地址对黑名单进行识别和处理,从而过滤出坏人。

多网卡环境下的IP获取:可以解决多网卡环境下客户端IP获取的问题。

六、总结

nginx-real-ip是nginx模块中非常实用的一个模块,可以简单地解决反向代理服务器和后端服务器之间客户端IP地址获取的问题。同时,还可以应用于防CC攻击、防黑名单等网站安全方面的操作。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/200321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-05 14:04
下一篇 2024-12-05 14:05

相关推荐

  • Centos7配置静态ip

    本文将详细阐述如何在Centos7系统中配置静态ip。 一、查看网络接口 在配置静态ip之前,我们首先需要查看系统中的网络接口,以确定我们需要配置的网卡是哪一个。 ifconfig…

    编程 2025-04-29
  • Python检测IP连通

    Python是一门强大的编程语言,常用于网络开发、数据分析等领域。IP地址是网络通信的基础,在网络通信中,有时需要检测IP地址是否连通。下面将从多个方面介绍Python检测IP连通…

    编程 2025-04-28
  • 如何正确复制圣诞树程序代码?

    复制圣诞树程序代码是一项基本的技能,无论是初学者还是前端开发专业人员都需要掌握。本文将从多个方面详细阐述如何正确地复制圣诞树程序代码,让你能够安心地应对代码复制难题。 一、代码复制…

    编程 2025-04-28
  • Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901解析

    本文将对Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901进行详细解析,并提供相关代码示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    编程 2025-04-27
  • Java如何从Nginx下载文件

    本文将从以下几个方面详细介绍如何使用Java从Nginx下载文件。 一、准备工作 在Java中下载文件需要使用到Apache HttpClient库,这个库是一个基于Java的HT…

    编程 2025-04-27
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • NGINX权限被拒绝问题

    NGINX是一款常见的Web服务器软件,但是在使用中常会遇到“permission denied”权限被拒绝的问题。下文将从多个方面介绍本问题和解决方法。 一、系统权限问题 1、检…

    编程 2025-04-25
  • 关闭nginx命令详解

    一、linux系统中关闭nginx命令 1、使用ps命令找到nginx的进程ID $ ps -ef | grep nginx 2、发送信号给nginx进程结束 $ kill -QU…

    编程 2025-04-25
  • 详解 IP 正则表达式

    一、IP 地址基础知识 在讲解 IP 的正则表达式前,我们先来了解一下 IP 地址的基础知识。IP 是 Internet Protocol 的缩写,用于标识网络中的设备。IP 地址…

    编程 2025-04-24
  • 深入浅出:理解nginx unknown directive

    一、概述 nginx是目前使用非常广泛的Web服务器之一,它可以运行在Linux、Windows等不同的操作系统平台上,支持高并发、高扩展性等特性。然而,在使用nginx时,有时候…

    编程 2025-04-24

发表回复

登录后才能评论