nginx如何配置x-forwarded-for头部
作者:绝世好阿狸 发布时间:2023-06-13 23:09:10
nginx配置x-forwarded-for头部
本地用tomcat起了一个j2ee的应用,然后又起了一个nginx做反向代理。
nginx.conf:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 50001;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /ly {
proxy_pass http://127.0.0.1:8080/hello.do;
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include servers/*;
}
这里配置了nginx的监听端口为50001
使用了proxy_set_header来配置nginx转发的头部操作。
其中如下配置就是针对xff的:
其中$proxy_add_x_forwarded_for变量的值是当前包的x-forwarded-for变量和remote-addr变量,使用逗号隔开。
所以上面的命令就是把当前的包的x-forwarded-for的值设置为x-forwarded-for和remote-addr的连接。
这样这个包转发给下游时,下游就有了这台nginx服务器的ip地址。
当client第一次请求nginx服务器时,nginx拿到的x-forwarded-for为null,remote-addr就是client的实际地址,所以第一次的转发的xff值就只有client的ip地址,转发的nginx的地址是在remote-addr里。
下一台nginx服务器会把第一台nginx服务器的地址填入xff。
所以当一台服务器收到一个包时,上一台服务器的地址并不在xff里面,必须通过remote-addr拿到。
Controller:
public class MainController extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("NGINX FORWARD");
String ssfAddr = request.getHeader("X-Forwarded-For");
String realIp = request.getHeader("X-Real-IP");
String remoteAddr = request.getRemoteAddr();
System.out.println("X-Forwarded-For: " + ssfAddr);
System.out.println("X-Real-IP: " + realIp);
System.out.println("remoteAddr: " + remoteAddr);
}
}
本地ip为192.168.43.33。
然后我先使用了手机访问了nginx域名:192.168.43.33:50001/ly
显示:
X-Forwarded-For: 192.168.43.1
X-Real-IP: 192.168.43.1
remoteAddr: 127.0.0.1
这里192.168.43.1是手机的ip,127.0.0.1是nginx的ip。且通过x-real-ip可以获取到真实ip。
在使用一个crul命令:
curl http://localhost:50001/ly -H 'X-Forwarded-For: unkonw, <8.8.8.8> 1.1.1.1' -H 'X-Real-IP: 2.2.2.2'
显示:
X-Forwarded-For: unkonw, <8.8.8.8> 1.1.1.1, 127.0.0.1
X-Real-IP: 127.0.0.1
remoteAddr: 127.0.0.1
这里客户端就是本机,所以会在xff后面添加一个127.0.0.1。也是符合预期的。
来源:https://blog.csdn.net/u010900754/article/details/81160268


猜你喜欢
- 为什么要看日志?比如启动容器失败,却不给出任何提示,这时候我们就需要查看下到底是为什么? 查看日志: 命令格
- 链接建设是指在搜索引擎优化战略中,一种让其他网站链接到自己网站上的一种优化方式。通过产生相关的和权威的网站链接到自己的网站上。除了会提升你的
- 中国的站长比中国的牛还多;吹牛的站长比喝啤酒吹酒瓶的人要多,不会吧?看到某篇文章这么写的。个人做站,很多人为了兴趣,业余做站,交流思想技术交
- 导读:美国IT网站eWeek今天撰文称,虽然微软仍然在网络领域落后谷歌,但通过10大理由可以看出,微软仍然拥有很大潜力,并有望最终主导网络世
- 本文研究的主要是入域的Windows访问未入域的Samba服务的问题,具体介绍 如下。由于权限控制问题,公司的Samba服务使用的是tdbs
- 虚拟机软件:vmware workstation镜像:deepin-desktop-community-1002-amd64.iso提前创建
- 见到论坛里有部分朋友反映发布内容,内容缩略图选择为“站内选择”方式上传图片,上
- VMwarea的安装过程就不演示了,主要看看如何装入win7镜像1、下载win7镜像链接: https://pan.baidu.com/s/
- 注:只测试了了fcitx,没有测试ibus因为不是新手教程,所以安装sublime,fcitx,gcc等等的就不说了若看不懂请留言下面为实现
- 首先下载几个软件:JDK、Apache和Tomcat。JDK(Java Development Kit )是一切java应用程序的基础,可以
- 1. 输出重定向:默认条件下,标准输出和错误输出都是终端,可以把标准输出和错误内容进行重定向:[~]# echo "hello\!
- 网易游戏频道(http://game.163.com)于10月21日起已经能够正常访问。目前的网易游戏频道首页导航上分为产品、玩家和业界三个
- 问题提出公司的开发测试服务器部署在阿里云, 阿里云给出的实例一般都是只有一个分区, 20G到40G的样子, 然后再买存储挂载到其他目录.而
- 今天我会讲述如何为你的个人网站或者博客安装SSL 证书,来保护你的访问者和网站之间通信的安全。安全套接字层或称SSL,是一种加密网站和浏览器
- 在Apache的Access Log中会看到很多如下的访问日志: 127.0.0.1 - - [05/May/20
- VMware EXSI 为虚拟机centos安装VMware Tools1.首先查看虚拟机是否安装VMware Tools2.打开虚拟机控制
- 帮朋友做个小导航时用到了下拉菜单,话说WordPress3.0以上版本的”wp_nav_menu()”真是好用,加上主题自定义菜单的设置简直
- 1、对网站的代码进行检查,检查是否被黑客放置了网页木马和ASP木马、网站代码中是否有后门程序。2、对网站代码安全性进行检查,检查是否存在SQ
- 北京时间10月16日消息,据国外媒体报道,互联网安全软件厂商AVG周四发布报告称,包括MyGirlySpace、Ferraritone、Ma
- Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性:持久化数据与容