nginx $remote_addr 详解

这篇具有很好参考价值的文章主要介绍了nginx $remote_addr 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

nginx的自带变量 $remote_addr 代表客户端的IP

remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP。

但是实际场景中,我们即使有代理,也需要将$remote_addr设置为真实的用户IP,以便记录在日志当中,当然nginx是有这个功能,但是需要编译的时候添加--with-http_realip_module 这个模块,默认是没有安装的。

#这个模块允许从请求标头更改客户端的IP地址值,默认为关

忽略x_forwarded_for

其实,当你使用了Nginx的realip模块后,就已经保证了remote_addr里设定的就是客户端的真实IP,再看下这个配置

上面的配置就是把从192.168.100.0这一网段过来的请求全部使用X-Forwarded-For里的头信息作为remote_addr

set_real_ip_from  192.168.100.0 /24 ;
real_ip_header     X-Forwarded-For;

它就是把x_forwarded_for设为remote_addr,而nginx里的x_forwarded_for取的就是其中第一个IP。

使用这些设置就能保证你的remote_addr里设定的一直都是客户端的真实IP,而x_forwarded_for则可以忽略了

提示:

nginx -V 可以查看到的编译参数和编译的模块(静态和动态)

没有这个模块  ngixn配置文件中是不识别set_real_ip_from   192.168.100.0/24; 这个指令的

最简单测试的的就是:

 --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

模拟当然就很简单了

客户端:

curl -I bbs.test.com  -H 'X-Forwarded-For: 2.2.2.2' 

代理看到的remote_addr 会是"2.2.2.2"

ngixn server看到的也是2.2.2.2

有client nginx-proxy  ngixn-server   curl -I bbs.test.com 这样就可以测试了。文章来源地址https://www.toymoban.com/news/detail-426228.html

到了这里,关于nginx $remote_addr 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git remote命令详解

    2024年02月05日
    浏览(36)
  • git remote add origin详解

     git remote add origin详解_笔记大全_设计学院 使用“git remote add origin”指令,可以轻松地将本地项目连接到远程Git仓库 “git remote add origin”指令可以使用以下语法: 其中,远程Git仓库地址是你的远程Git仓库的网址。 对于如何获取远程Git仓库地址,我们举例说明: 比如,你的远

    2024年02月14日
    浏览(52)
  • 【Nginx15】Nginx学习:HTTP核心模块(十二)内嵌变量

    关于内嵌变量,其实就是 Nginx 开放给我们的在配置文件中可以使用的变量。源码中无非就是替换成真实的代码变量进行操作。这些变量可以帮助我们做很多事情。之前的文章中其实也有不少地方用到了,比如说  $uri  这个变量,是不是已经见过很多次了。而且这些变量基本

    2024年02月14日
    浏览(38)
  • SpringBoot自带模板引擎Thymeleaf使用详解②

    目录 一、条件判断和迭代遍历 1.1 条件判断 2.2 迭代遍历 二、获取域中的数据和URL写法 2.1 获取域中的数据 2.2 URL写法 三、相关配置 语法 作用 th:if 条件判断 准备数据 model.addAttribute(\\\"sex\\\",\\\"男\\\"); 使用实例 div     span th:if=\\\"${sex}==\\\'女\\\'\\\"这是女生/span     span th:if=\\\"${sex}==\\\'男\\\'\\\"这是男

    2024年02月08日
    浏览(38)
  • SpringBoot自带模板引擎Thymeleaf使用详解①

    目录 前言 一、SpringBoot静态资源相关目录 二、变量输出 2.1 在templates目录下创建视图index.html 2.2 创建对应的Controller 2.3 在视图展示model中的值 三、操作字符串和时间 3.1 操作字符串 3.2 操作时间         Thymeleaf是一款用于渲染XML/HTML5内容的模板引擎,类似JSP。它可以轻易的

    2024年02月08日
    浏览(41)
  • docker使用环境变量的方式动态配置nginx

    使用docker部署nginx时,由于nginx配置文件里面的一些ip和端口是随着环境变化而改变的,即在 不同的环境 里,使用的 ip和端口都不一样 。这就导致每次部署到新环境时,都要重新编写配置文件,再制作成新的镜像,比较繁琐。 所以我想要制作一个通用的镜像,将ip和端口设置

    2024年02月09日
    浏览(37)
  • Php+Nginx项目配置信息配置到环境变量

    通过nginx,配置到nginx.conf里面 fastcgi_param key “value”; 在php中通过 $_SERVER[\\\"key\\\"] 即可读取

    2024年02月05日
    浏览(42)
  • matlab自带VMD详解,VMD去噪,VMD分解

    为了更好的利用MATLAB自带的vmd函数,本期作者将详细讲解一下MATLAB自带的vmd函数如何使用,以及如何画漂亮的模态分解图。 首先给出官方vmd函数的调用格式。 函数的输入: 这里的x是待分解的信号,一行或者一列都可以! 函数的输出: 第一个参数位置--imf:vmd分解得到的I

    2024年02月06日
    浏览(36)
  • 使用Windows系统自带的安全加密解密文件操作步骤详解

    原以为安全加密的方法是加密压缩包,有的需要用软件加密文件,可每次想往里面修改或存放文件都要先解密,不用时,还得去加密,操作步骤那么多,那多不方便呀,这里讲讲用系统自带的BitLocker加密工具怎么做。 原以为系统自带的 BitLocker 只能加密计算机的硬盘,那怎样

    2024年02月03日
    浏览(48)
  • nginx脚本,Nginx变量截取字符串,拼接字符串,nginx打印日志,添加修改HTTP请求头,添加修改HTTP响应头

    nginx变量命名,以$开头。 打印日志的目的,是想知道某个变量的值是多少,通过add_header设置响应头,间接地打印日志。 通过设置响应头,然后在浏览器上请求nginx地址,然后得到的响应头,就知道变量值是多少了。 这个需要注意一下,特别是正则 ~   ,后面截取字符串需要

    2024年02月12日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包