JUN

使用Nginx做前端反向代理
使用Nginx做前端,并缓存静态文件。博主在后端服务器使用了URL重写功能将.php重写为伪静态.html文件之后...
扫描右侧二维码阅读全文
22
2015/02

使用Nginx做前端反向代理

使用Nginx做前端,并缓存静态文件。
博主在后端服务器使用了URL重写功能将.php重写为伪静态.html文件之后,Nginx也可以把它缓存到前端服务器,这样可以进一步提高并发数。

一、安装Nginx
下载好Nginx之后解压,进入Nginx的目录。

groupadd www
useradd -s /sbin/nologin -g www www
./configure --user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-ipv6

你可能会被提示安装pcre和openssl库,也不麻烦。
1、安装pcre
下载地址:http://sourceforge.net/projects/pcre/files/pcre/
这是一个编译例子:

tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make
make install

2、openssl库直接使用yum命令安装

yum -y install openssl-devel

二、配置Nginx
启动的时候被提示了这么句错误,说找不到pcre,明明才安装的,可能是没有搜索到安装的目录。

./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

编译/etc/ld.so.conf,在第一行加上

/usr/local/lib

之后运行这条命令刷新:

ldconfig

然后应该可以启动了

/usr/local/nginx/sbin/nginx

要开机自启动,编辑/etc/rc.d/rc.local,加上/usr/local/nginx/sbin/nginx就可以了。

三、配置反代
Nginx的配置文件应该在/usr/local/nginx/conf/nginx.conf
这是我的配置例,可以作为参考。
因为我把首页的index.php也定时做了index.html的静态缓存,所以这么写,细节部分可以自己更改。

Server{
  listen       80;
  server_name  www.反代服务器.com;
  location / {
    root /home/nginx_cache;
    index index.html;
    if ( !-e $request_filename) {
        proxy_pass http://www.被反代服务器.com;
    }
  }
        
  location ~ \.php$ {
    proxy_pass http://www.被反代服务器.com;
  }

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {
    expires 1d;
    root /home/nginx_cache;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_store on;
    proxy_store_access user:rw group:rw all:rw;
    proxy_temp_path /home/nginx_cache;
    if ( !-e $request_filename) {
        proxy_pass http://www.被反代服务器.com;
    }
  }
}

其中以上/home/nginx_cache为在反代服务器生成的缓存目录。
expires 1d; 是缓存保存时间,我这里是1天,你可以根据自己需要修改。
gif|jpg|jpeg|png|bmp|swf|js|html|htm|css 是缓存的文件格式,根据自己需要删改。

编辑完了之后别忘了重新加载配置文件:

/usr/local/nginx/sbin/nginx -s reload

(四、定时清理缓存文件)
上面这样做是会在前端服务器产生缓存文件的,如果需要定时清理,可以做个脚本定时运行。
比如:

#!/bin/bash
#自动删除缓存文件
rm -rf /home/nginx_cache/*

#生成首页缓存文件
wget -O /home/nginx_cache/index.html http://www.被反代服务器.com

可以保存为/root/cache.sh

chmod 755 /root/cache.sh
crontab -e

添加(每小时运行一次):

MAILTO=""
15 * * * * sh /root/cache.sh

【参考】
http://www.hostloc.com/thread-264922-1-1.html

Last modification:July 21st, 2016 at 08:49 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment