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,如需转载请自行联系原作者



相关文章
|
4月前
|
弹性计算 监控 负载均衡
|
4月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
283 61
|
3月前
|
运维 监控 负载均衡
slb后端服务器故障
slb后端服务器故障
90 13
|
4月前
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
240 1
|
4月前
|
监控 负载均衡 算法
slb管理后端服务器
【10月更文挑战第18天】
65 5
|
4月前
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
4月前
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
|
5月前
|
存储 安全 数据库
后端技术在现代Web开发中的实践与创新
【10月更文挑战第13天】 本文将深入探讨后端技术在现代Web开发中的重要性,通过实际案例分析展示如何利用先进的后端技术提升用户体验和系统性能。我们将从基础架构设计、数据库优化、安全性保障等方面展开讨论,为读者提供清晰的指导和实用的技巧。无论是新手开发者还是经验丰富的技术人员,都能从中获得启发和帮助。
107 2
|
6天前
|
域名解析 人工智能 弹性计算
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
58 10
|
16天前
|
弹性计算 运维 监控
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
81 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评

热门文章

最新文章