proxy_pass 模式
upstream httpserver {
ip_hash;
server 172.20.39.79 weight=1;
server 172.20.39.80 weight=1;
server 172.20.39.81 weight=1;
}
server
{
listen 80;
server_name xxx.abc.com *.xxx.abc.com;
index index.html index.htm index.php default.html default.htm default.php;
root /data/www/xxx/Public;
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://httpserver;
}
#access_log /data/wwwlogs/xxx.abc.com.log;
}
fastcgi_pass 模式
注意:该模式必须保证在nginx服务器上有php服务器上对应的被请求php文件(只要能找到对应文件名即可,不需要php文件内容相同,空文件即可),主要是因为nginx会检查文件是否存在,单入口模式的系统,只要有index.php就可以了
nginx 配置,服务器IP 172.20.39.78
upstream phpserver {
ip_hash;
server 172.20.39.79:9000 weight=1;
server 172.20.39.80:9000 weight=1;
server 172.20.39.81:9000 weight=1;
}
server
{
listen 80;
server_name xxx.abc.com *.xxx.abc.com;
index index.html index.htm index.php default.html default.htm default.php;
root /data/www/xxx/Public;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
location ~ /uploads/.*.php$ { deny all; }
location ~ [^/].php(/|$)
{
fastcgi_pass phpserver;
fastcgi_index index.php;
include fastcgi.conf;
include fastcgi_params;
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/data/www/xxx/:/tmp/:/proc/";
include pathinfo.conf;
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /.
{
deny all;
}
access_log /data/wwwlogs/xxx.abc.com.log;
}
php-fpm.conf 配置 服务器IP 172.20.39.80,其他两台服务器类似
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice
[www]
listen = 9000
listen.backlog = -1
listen.allowed_clients = 172.20.39.80,127.0.0.1,172.20.39.78
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 600
pm.start_servers = 80
pm.min_spare_servers = 20
pm.max_spare_servers = 600
pm.max_requests = 4096
pm.process_idle_timeout = 10s
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = /var/log/slow.log