- 浏览: 950331 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- mysql (37)
- hibernate (3)
- struts (9)
- spring (33)
- dom4j (2)
- junit (0)
- exception (1)
- 随笔杂谈 (12)
- google app engine (1)
- XMPP (1)
- OAuth安全授权 (1)
- 版本控制 (8)
- 心情感悟 (0)
- core java (19)
- log4j (7)
- jquery (12)
- javascript (10)
- 网站性能优化及工具 (11)
- 服务器架设配置等 (38)
- EXT (4)
- 正则表达式 (5)
- 日志统计分析 (2)
- htmlparse (4)
- httpclient (5)
- java随笔 (5)
- dhtmlxtree (1)
- freemarke (5)
- memcached (6)
- javamail (5)
- Linux命令 (10)
- 应用监控cpu web jdbc等 (4)
- jmagick (9)
- 第三方缓存策略 (9)
- ORM (2)
- hadoop (2)
- 大数据量处理 (8)
- 经典 (1)
- 权限设计 (1)
- andriod (1)
- mybatis (12)
- redis (24)
- 数据结构_算法 (5)
- 分布式系统 (1)
- php (1)
- 网络编程 (3)
- 服务器部署 (3)
- ios (2)
- IM (23)
- mina (1)
- 视讯和语音 (1)
- 代码生成 (1)
- 架构 (4)
- 建模工具 (1)
- oracle (4)
- solr (10)
- 构建工具 (7)
- html5 (1)
- nginx (5)
- css (1)
- 大数据-分布式 (2)
- 设计模式 (2)
- mq (2)
- jvm调优 (8)
- 并发编程 (2)
- 搜索引擎 (1)
- UML (2)
最新评论
-
天使建站:
jquery获取网页里多选框checkbox选中项的值的方法及 ...
JS jQuery分别获取选中的复选框值 -
abao1:
发现一个小问题 sortAndSave方法中的for循环 第二 ...
完整java实现外部排序 -
西巴拉古呀那:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
成大大的:
Kafka分布式消息系统实 ...
消息系统kafka介绍
http://blog.csdn.net/songerzhou/article/details/5142863
自从Nginx出现以后,我们都喜欢让 Nginx 跑在前方处理静态文件,然后通过 proxy 把动态请求过滤给 apache。
这么有个问题,跑在后方 apache 上的应用获取到的IP都是Nginx所在服务器的IP ,或者是本机 127.0.0.1 。
最明显就是查看 apache 的访问日志。就会见到来来去去都是内网的IP。
如果你的应用有诸如,“单个IP不能重复登陆”,“单个IP注册相隔n分钟”… 之类用于IP判别的安全规则。
这么就麻烦了….
但还好,你可以通过修改 nginx proxy 的参数令后端应用获取到 Nginx 发来的请求报文获取到外网的IP。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
但这解决的问题单单只是应用上,apache 日志上所获取的ip依然还是本地。
特别有些考虑不周全的应用,例如 Tattertools (一个博客程序) 就会犯误。
后台的访问日志死活显示访客数 1,ip来自 127.0.0.1
搜寻了一下,发现了apache这一个来自第三方的mod 配合Nginx proxy 使用。
说明:http://stderr.net/apache/rpaf/
下载:http://stderr.net/apache/rpaf/download/
最新版本是 mod_rpaf-0.6.tar.gz
安装也相当简单。
# tar zxvf mod_rpaf-0.6.tar.gz 下载后解压
# cd mod_rpaf-0.6
Apache 的目录按自己的环境修改,并选择相应的安装方式:
#/usr/local/apache/bin/apxs -i -a -c mod_rpaf.c Apache 1.3.x 的安装方式
#/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c Apache 2.x 的安装方式
完成后会在 http.conf 的 LoadModule 区域 为你多加了一行。
LoadModule mod_rpaf-2.0.so_module modules/mod_rpaf-2.0.so
经 apache 2.2.6 的实验,使用这一行启动 apache 的时候会报错的。
所以改为:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
并在下方添加
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.10.2 # 填写Nginx所在的内网IP。
RPAFheader X-Forwarded-For
保存退出后重启apache
再看看 apache 的日志内容? 呵,不再是来来去去的那几个IP了吧。
----------------------------------------------
Apache后端获取用户真实IP地址-nginx前端
mod_rpaf 是一个 Apache的模块,利用它可以给 Apache 的后端应用提供客户端真实的IP地址。
在nginx作为前端,apache作为后端的情况下,apache只能获取到nginx前端的ip地址,而无法获取到用户的真实ip地址,在这种情况下,如果php需要对用户的ip做限制将无法实现。针对这种环境,apache开发了相应的模块mod_rpaf,能够获取到用户的真实ip地址。
如下图:
左边只能获取到nginx代理的IP地址,右边Apache才能获取到用户的真实ip地址
使用方法:
[codesyntax lang="java" lines="no"]
# if DSO load module first:
LoadModule rpaf_module libexec/apache2/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.0.0.1
RPAFheader X-Forwarded-For
[/codesyntax]
具体安装配置请往下看
下载安装模块
[codesyntax lang="java" lines="no"]
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar -xzvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6/
/usr/local/apache2.2.15/bin/apxs -i -c -n mod_rpaf-2.0.slo mod_rpaf-2.0.c
[/codesyntax]
添加apache配置
[codesyntax lang="java" lines="no"]
vi /usr/local/apache2.2.15/conf/httpd.conf
# 在最后一行复制如下内容
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.50.10 # 代理服务器的ip地址(记得做相应修改)
RPAFheader X-Forwarded-For
备注:RPAFproxy_ips后面添加代理服务器的ip地址,有几个填几个
[/codesyntax]
查看apache是否有rapf模块
[codesyntax lang="java" lines="no"]
# /usr/local/apache2.2.15/bin/apachectl -M | grep rpaf
rpaf_module (shared)
[/codesyntax]
最后重启Apache即可
[codesyntax lang="java" lines="no"]
# /usr/local/apache2.2.15/bin/apachectl -t
# /usr/local/apache2.2.15/bin/apachectl restart
[/codesyntax]
发表评论
-
tomcat jvm 参数说明
2013-12-17 09:50 1547maxThreads=”1000″ enableLookup ... -
SecureCRT常用快捷键设置
2013-11-27 08:36 2757http://www.tatujia.com 1:如果不 ... -
自动拒绝恶意IP远程登录Linux服务器脚本
2013-09-19 13:00 1277http://wgkgood.blog.51cto.com/ ... -
帮助中心分类 新闻公告 (10) Windows VPS教程 (13) Linux VPS教程 (28) 其他 (1) linux中Cron定时任务系统命令详解
2013-05-21 17:46 1027有很多同学在购买VPS之后,需要用到计划任务.但是又对计划任 ... -
Nginx配置文件nginx.conf中文详解
2013-04-03 10:29 930#定义Nginx运行的用户和用户组user www www ... -
nginx配置相关文章
2013-04-03 10:29 938nginx配置相关文章 http://developer ... -
Nginx日志自动切割脚本
2013-04-03 10:29 1015说明:每隔7天执行一次,使用crontab自动运行脚本,请 ... -
centos 6.2 64位安装nginx php mysql
2013-04-03 10:30 1800平台环境http://jiyunjie.blog.51ct ... -
centos nginx安装教程
2013-04-02 13:50 10771.安装 默认安装到/usr/local/ng ... -
Linux中iptables设置详细
2012-09-28 14:13 1574无论如何,iptables是一个需要特别谨慎设置的东西,万 ... -
CentOS 5.6Final下FTP安装及配置 .
2012-09-27 10:07 1242My Scripts: [root@localhost ~] ... -
CentOS5.6 安装JDK
2012-09-27 10:05 1017首先通过界面卸载OpenJDK.然后卸载默认的jdk1.42 ... -
Java获取客户端真实IP地址的两种方法
2012-09-13 13:08 1027在JSP里,获取客户端的IP地址的方法是:request.ge ... -
让tomcat支持2级域名共享session
2012-09-13 10:46 1036tomcat默认情况下是不支持2级域名共享session的,所 ... -
nginx防盗链配置
2012-08-21 13:22 1253以下配置一般可称为图片防盗链配置,如果是mp3这种文件,我现在 ... -
将nginx同时作为负载均衡和Web缓存服务器
2012-02-13 11:11 1206http://server.51cto.com/sColleg ... -
nginx 代理模式下,获取客户端真实IP
2011-11-30 09:42 4862最近做博友推荐,发现个小问题,用$_SERVER['REMOT ... -
nginx相关文章地址收集
2011-11-04 14:07 1045http://bbs.chinaunix.net/thread ... -
LVS+keeplived+nginx+tomcat高可用、高性能jsp集群
2011-11-04 10:31 2094摘自:http://kerry.blog.51cto.com/ ... -
nginx集成多台tomcat虚拟主机配置说明
2011-11-03 17:32 1839nginx.conf 最后一行包含以下文字: 引用 in ...
相关推荐
### 配置Nginx前端Apache后端服务器详解 在现代Web架构中,为了提高网站的性能、安全性以及实现负载均衡,Nginx与Apache的组合应用变得日益流行。Nginx以其高效的静态文件处理能力和良好的并发性能,常被用作前端...
在Windows环境下,配置前端Nginx与后端多Apache服务器(使用Django WSGI)是一项常见的任务,特别是在部署大型Web应用时。这样的架构能够充分利用Nginx的静态资源处理能力,以及Apache对动态内容的高效处理。以下将...
### LNAMP架构中后端Apache获取用户真实IP地址的2种方法 在现代Web服务器部署环境中,LNAMP(Linux, Nginx, Apache, MySQL, PHP)架构是一种常见的选择,尤其是在需要高性能和高稳定性的场景下。然而,在这种架构中...
在PHP集群中,Nginx可以作为前端的负载均衡器,将静态内容请求直接返回给用户,而将PHP动态请求转发到后端的Apache服务器。 Apache是应用最广泛的Web服务器之一,它提供了强大的模块化功能和灵活性。Apache默认使用...
然而,在实际应用场景中,客户端请求往往经过了多级代理(如Apache、Squid等),这使得直接使用`request.getRemoteAddr()`方法获取到的IP地址并不是客户端的真实IP,而是代理服务器的IP地址。 例如,在使用Apache或...
### Nginx 作为 Apache 和 JBoss 的替代方案 #### 背景介绍 随着互联网技术的不断发展,网站流量的增长对服务器性能提出了更高要求。Apache 和 JBoss 是两种广泛使用的 Web 服务器和应用服务器,但在高并发场景下,...
《实战Nginx取代Apache的高性能Web服务器》一书,主要探讨了如何利用Nginx这一现代、高性能的Web服务器来替代传统的Apache服务器,以提升网站的运行效率和响应速度。Nginx以其异步非阻塞的I/O模型、模块化设计以及...
- **Nginx 负责负载均衡**:根据预设规则将请求转发给后端的真实服务器(如 Apache 服务器)。常见的负载均衡策略包括轮询(默认)、最少连接数、IP 哈希等。 - **响应返回给用户**:真实服务器处理完请求后,将响应...
### Nginx+Apache+MySQL+PHP+Memcached+Squid 搭建门户网站 #### 一、前言与架构概述 随着互联网技术的发展,如何构建一个高效、稳定且能够应对高并发访问的Web服务器成为了许多企业和开发者关注的重点。本文将...
因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。 同样适用于前端是 Squid 或者...
在Real Server上,需要配置Nginx或Apache作为前端代理,将接收到的请求转发给后端的应用实例。对于Nginx,可以在配置文件中定义upstream块来管理后端服务器列表,通过proxy_pass指令将请求转发。Apache可以使用mod_...
在实际部署中,两者也可以结合使用,形成“Apache后端处理,Nginx前端反向代理”的架构,以充分利用各自优势。 以上就是关于Apache和Nginx的安装与简单配置介绍。具体使用时,还需要根据实际需求进行调整,并注意...
Nginx内置负载均衡器,可以通过轮询、权重、IP哈希等多种策略分配请求到后端服务器。例如,`upstream backend { server backend1; server backend2; }`定义了一个名为backend的后端服务器组。 7. **错误页面处理**...
首先,Nginx是一款轻量级、高性能的Web服务器和反向代理服务器,常用于处理静态资源和分发请求到不同的后端服务器,如Apache或Tomcat。Apache则是一款广泛应用的开源HTTP服务器,通常用于运行Java Web应用程序。 1....
通过《实战Nginx:取代Apache的高性能Web服务器》这本书,读者不仅可以掌握Nginx的基本操作,还能学习到如何利用Nginx构建高效、稳定、安全的Web服务环境,对于从事Web开发和运维的人员来说,是一份宝贵的参考资料。
### 实战Nginx取代Apache的高性能WEB服务器 在当今互联网技术快速发展的背景下,Web服务器作为网站的基础支撑组件,其性能、稳定性和安全性对于保障网站的正常运行至关重要。Apache和Nginx作为目前最流行的两种Web...
2. 反向代理和负载均衡:Nginx能够作为反向代理服务器,将用户请求分发到后端多个服务器,实现负载均衡,提高服务的可用性和响应速度。 3. 静态文件处理:Nginx对静态文件(如图片、CSS、JavaScript)的处理性能...
1. **反向代理模式**:Nginx作为前端反向代理服务器,接收到客户端请求后,根据预设的策略(如轮询、最少连接数、IP哈希等)将请求转发到后端的Apache服务器集群。这样可以实现负载均衡,防止单一服务器过载。 2. *...