简介
Nginx是一款强大的web服务器,本文会对Nginx反向代理,反向代理PHP及缓存做一下简要的介绍。
主机准备
现准备三台主机:www.linux15.io,www.test74.com,www.test168.com。其中linux15作为响应服务器接收用户请求,test74与test168作为后端服务器。
配置反向代理
直接访问www.test74.com:
现在配置反向代理,使得访问www.linux15.io的请求由www.test74.com来处理,最简单的反向代理配置可如下:
server {
listen 80;
server_name www.linux15.io;
location / {
proxy_pass www.test74.com;
}
}
访问linux15.io,实际处理请求的是test74:
配置带有缓存的反向代理
主配置文件/etc/nginx/nginx.conf添加如下配置(放在http模块中):
#指定缓存目录为 /data/nginx/cache,缓存层级为3级,名称为pcache,大小10M,最大2G.
proxy_cache_path /data/nginx/cache levels=1:1:1 keys_zone=pcache:10m max_size=2g;
/etc/nginx/conf.d/目录下的配置文件如下:
server {
listen 80;
server_name www.linux15.io;
proxy_cache pcache;
proxy_cache_key $request_uri;
proxy_cache_methods GET HEAD;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
#后端服务器错误时,可使用缓存返回旧的内容
proxy_cache_use_stale http_502;
location / {
proxy_pass http://www.test74.com:80;
proxy_set_header X-Real-IP $remote_addr;
}
}
访问linux15.io,可以看到生成的缓存文件如下:/data/nginx/cache/9/d/7/6666cd76f96956469e7be39d750cc7d9,/data/nginx/cache/9/d/7/与配置的levels=1:1:1对应,查看缓存文件中的内容:
# cat /data/nginx/cache/9/d/7/6666cd76f96956469e7be39d750cc7d9
直接修改缓存文件,再次访问www.linux15.io,会发现访问内容发生变化:
反向代理PHP配置
集成PHP时,可使用spawn-fcgi或php-fpm,这里使用php-fpm。
首先在test74主机上安装php-fpm并启动服务,默认情况下php-fpm会监听9000端口:
test74主机上建立测试文件:
下面修改liux15.io上面的nginx配置:
修改/etc/nginx/nginx.conf,开启缓存功能:
fastcgi_cache_path /data/nginx/fcgicache levels=2:2:2 keys_zone=fcache:10m max_size=2g;
修改/etc/nginx/conf.d/下的配置文件:
server {
listen 80;
server_name www.linux15.io;
index index.php index.html;
location / {
root /data/nginx/html;
}
location ~* \.php$ {
fastcgi_pass www.test74.com:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /data/apps/$fastcgi_script_name;
fastcgi_cache fcache;
fastcgi_cache_key $request_uri;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 301 1h;
fastcgi_cache_valid any 1m;
}
}