现在的位置: 首页网络技术>正文
用nginx做前端,后端apache能获得真实IP的方法
2011年04月24日 网络技术 评论数 5

利用nginx做前段缓存的方法在张宴的blog(http://blog.s135.com/nginx_cache/)上已经有说明,不过我们要做些改变,设置为只缓存图片;CSS之类的,避免伪静态被误缓存.现在附上我的nginx配置:(我只贴了server部份,nginx的初始配置请在张宴blog里抄)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server
	{
       listen           80;
       server_name      arm.im	www.arm.im;
 
    location ~ \.(jpg|jpeg|gif|bmp|png|css|js|flv|xml)$
      {
          #  proxy_next_upstream http_502 http_504 error timeout invalid_header;
             proxy_cache cache_one;
             proxy_cache_valid  200 304 12h;
             proxy_cache_valid  302 1m;
             proxy_cache_key $host$uri$is_args$args;
             proxy_set_header Host  $host;
             proxy_set_header X-Forwarded-For  $remote_addr;
             proxy_pass http://50.22.xx.xx;
      }
	location  /
		{
         proxy_set_header Host  $host;
         proxy_set_header X-Forwarded-For  $remote_addr;
         proxy_pass http://50.22.xx.xx;
		}
	}

这样就几乎就可以用了,不过还是有些不完美.因为在Apache那端的IP是nginx的IP.所以需要把nginx把客户的真实IP以某种方式发送给apache.
实际上proxy_set_header X-Forwarded-For $remote_addr;这就已经把客户端的真实IP包在http的包头了.只是前端的apache没做处理.这时,需要在前端apache中安装一个模块"rpaf".rpaf的最新版本在这http://stderr.net/apache/rpaf/ 上面也有安装方法

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

安装完成后会有如下信息:


图中的/usr/lib/apache/mod_rpaf-2.0.so 就是模块位置,要记住,不同的OS安装位置可能不一样.
最后在apache的配置文件的最后中加入

LoadModule rpaf_module /usr/lib/apache/mod_rpaf-2.0.so(须要注意位置是在SSH中安装好后提示的位置)
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 173.208.xx.xx  (请写你的nginx前端地址)
RPAFheader X-Forwarded-For

重启httpd,收工.
效果演示:http://arm.im

此文由戒往整理原创,转载请注时出处,如果你是debian/ubuntu,方法见评论

feihu分享到:

          

目前有 5 条留言 其中:访客:5 条, 博主:0 条

  1. light China Google Chrome Windows : 2012年05月02日14:04:57  1楼 @回复 回复

    这个lnmpa可以用吗?
    还是必须用其他机器反代然后缓存?

  2. Illusion China 360 Browser Windows : 2012年04月25日23:43:52  2楼 @回复 回复

    给力啊 正需要这个

  3. isfate China Google Chrome Windows : 2011年04月24日18:39:19  3楼 @回复 回复

    debian/ubuntu下,也不需要改apache的配置文件.而是修改/etc/apache2/mods-available/rpaf.conf

    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1

    把IP改为反向的前端即可

  4. isfate China Google Chrome Windows : 2011年04月24日18:33:17  4楼 @回复 回复

    更新一下:debian/ubuntu下无法运行”apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c”
    这时 apt-get install libapache2-mod-rpaf
    然后 a2enmod rpaf
    就可以了,源里已经有这个包了,不需要再重新编译安装

给我留言

留言无头像?


无觅相关文章插件,快速提升流量