nginx配置php程序负载均衡
# apache与nginx的区别
nginx本身只能处理静态页的解析,如果要解析动态页面的话,需要用到反向代理的功能
nginx有反向代理功能,能做负载均衡。apache没有
nginx更轻量级,占用的内存很小。而apache更稳定
nginx更适合高并发,因为nginx处理请求属于异步非阻塞的,可以多个连接(万级别)对应一个进程。而apache 则是阻塞型的,一个连接对应一个进程。
nginx 处理 静态资源 性能高于apache,处理 动态语言 性能低于apache,因为nginx处理动态语言经过的层次太多了。
A. 使用nginx的反向代理将请求转发到php-fpm -> B.fastcgi进程管理器(php-fpm)收到请求后选择并连接一个cgi解释器
# nginx的两种负载均衡方式
轮询加权(也可以不加权,就是1:1负载)和
ip_hash(根据ip分配后端服务器,解决session问题)
// 轮询加权
upstream lb {
server 192.168.196.130 weight=1;
server 192.168.196.132 weight=2;
}
// ip_hash轮询
upstream lb {
server 192.168.196.130;
server 192.168.196.132;
ip_hash;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 服务器环境假设
假设
192.168.1.111(主) -> 安装有LNMP,进行负载均衡控制
192.168.1.112(从) -> 安装有LNMP,进行应用运行
192.168.1.113(从) -> 安装有LNMP,进行应用运行
# 负载均衡配置
# 主服务器(192.168.1.111)负载均衡配置
vim /opt/nginx/conf/vhosts/zhuifanba.conf
upstream load_balance{
# 设置负载均衡的机器列表(采用轮询的方式)
server 192.168.1.112:80; #从服务器1
server 192.168.1.113:80; #从服务器2
}
server {
listen 80;
server_name www.zhuifanba.com;
location / {
#设置反向代理
proxy_pass http://load_balance;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(php|php5)?$
{
#设置反向代理
proxy_pass http://load_balance;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
# 设置静态文件的反向代理
proxy_pass http://load_balance;
expires 30d;
}
location ~ .*\.(js|css)?$
{
# 设置静态文件的反向代理
proxy_pass http://load_balance;
expires 1h;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 从服务器(192.168.1.112~113)运行环境配置
vim /opt/nginx/conf/vhosts/zhuifanba.conf
server {
listen 80;
server_name www.zhuifanba.com;
index index.html index.htm index.php;
root /var/www/zhuifanba/frontend/web;
location / {
if (!-e $request_filename){
rewrite ^/(.*) /index.php last;
}
}
location ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/zhuifanba/frontend/web$fastcgi_script_name;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
error_log /var/log/zhuifanba.error.log;
access_log /var/log/zhuifanba.access.log;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
上次更新: 2024/04/18, 11:24:45