nginx做前端,后端web服务器无法获取真正客户机的ip,解决方法

简介:

       由于,前端使用了nginx作为代理服务器,代理后端的web服务器和tomcat服务器,发现后端服务器的访问日志记录的客户端ip是nginx反代机器的ip,,所以,以下方法可以让后端服务器获取到真正的客户机ip。



首先在前端nginx服务器的server{  } 里添加:

proxy_set_header        Host            $host;

proxy_set_header        X-Real-IP       $remote_addr;

proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

以上增加了3个HTTP header,其中 X-Real-IP 是真正的ip


然后后端服务器则需要添加一个模块,--with-http_realip_module ,如果是tengine,则不需要重新编译,他已经自带。

nginx在线平滑添加新模块,(这里是后端web服务器)

先查看已经编译过的模块 /usr/local/webserver/nginx/sbin/nginx -V

1、cd nginx1.2.6

2、./configure --with-luajit --with-http_flv_module --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module 

3、make   不要make install 负责会覆盖以前的配置文件

4、  cp /usr/local/webserver/nginx/sbin/nginx /usr/local/webserver/nginx/sbin/nginx.bak 

5、cp ./objs/nginx /usr/local/webserver/nginx/sbin/

(如果出现  “nginx正在忙的提示”  先停止nginx运行/usr/local/webserver/nginx/sbin/nginx -s stop )

6、 重启     /usr/local/webserver/nginx/sbin/nginx

7、cd /usr/local/webserver/nginx/conf

  vim  nginx.conf

在server中添加以下,并打开默认日志格式。

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   /home/nginx/logs/nginx_access.log main;

 

    include deny.ip;

    server {

        listen       80;

        server_name  localhost www.ifeng.com;


        more_set_headers 'Server: VodServer.KSD';

        underscores_in_headers on;


         proxy_set_header   Host             $host;

         proxy_set_header   X-Real-IP        $remote_addr;

         set_real_ip_from   反代的ip地址;

         real_ip_header     X-Real-IP;

         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

}



8、监控 /home/nginx/logs/nginx_access.log ,是否生效,如果没有出现反代的ip表明已经获取到真正ip

 



本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1579159,如需转载请自行联系原作者



相关文章
|
6天前
|
弹性计算 监控 负载均衡
|
29天前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
69 0
|
1月前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
10天前
|
监控 负载均衡 算法
slb管理后端服务器
【10月更文挑战第18天】
14 5
|
11天前
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
27天前
|
监控 Serverless API
利用云函数实现后端服务的无服务器化
【10月更文挑战第7天】本文介绍了无服务器架构中的核心组件——云函数,探讨了其概念、优势及应用。云函数使开发者能在无需管理服务器的情况下运行代码,具备自动扩展、成本效益、快速迭代和聚焦业务逻辑等优势。文章还详细说明了实施云函数的步骤,并分享了实战技巧,旨在帮助读者更好地理解和应用这一技术。
|
1月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
51 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
22天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
111 0
|
28天前
|
前端开发 Java Shell
后端项目打包上传服务器部署运行记录
后端项目打包上传服务器部署运行记录
27 0
|
30天前
|
域名解析 弹性计算 安全
无法ping通ECS服务器公网IP的排查方法
无法ping通ECS服务器公网IP的排查方法

热门文章

最新文章