nginx反向代理实验(三)

=======================================================================

      张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师

      笔者微信:zhanghe15069028807,现居济南历下区

=======================================================================

php-myadmin

php-fpm

在192.168.80.11安装php和mariadb,启动之

//安装php和mariadb
[root@php-fpm ~]# yum -y install php-fpm php-mysql php-mbstring php-mcrypt mariadb-server

//修改php的配置文件
[root@php-fpm ~]# vim /etc/php-fpm.d/www.conf 
listen = 0.0.0.0:9000
;listen.allowed_clients = 127.0.0.1 #注释掉
php_value[session.save_path] = /var/lib/php/session #会话保存路径

//创建会话路径,启动之
[root@php-fpm ~]# mkdir -p /var/lib/php/session  
[root@php-fpm ~]# chown apache:apache /var/lib/php/session
[root@php-fpm ~]# systemctl start php-fpm.service ; ss -tnlp | grep 9000
LISTEN     0      128          *:9000                     *:*                  
//初始化mariadb设置密码启动之
[root@php-fpm ~]# vim /etc/my.cnf
[mysqld]
skip_name_resolve=ON
innodb_file_per_table=ON

[root@php-fpm ~]# systemctl restart mariadb
[root@php-fpm ~]# mysql_secure_installation 
Disallow root login remotely? [Y/n] n    #这里不要添加成Y了
[root@php-fpm ~]# mysql -uroot -pcba-123

php-fpm上没有主目录,我们要将phpmyadmin程序放置在哪里呢?先随便找一个地方当主目录/data/apps

[root@php-fpm ~]# mkdir /data/apps -p

//先来一个测试页
[root@php-fpm ~]# vim /data/apps/index.php
<?php
	phpinfo();
?>

//在主目录下放置好phpmyadmin,并做好软链接pma
[root@php-fpm apps]# ln -sv phpMyAdmin-4.0.5-all-languages pma
[root@php-fpm apps]# cd pma/
[root@php-fpm pma]# cp config.sample.inc.php config.inc.php
[root@php-fpm pma]# vim config.inc.php

nginx代理端

server {
        listen 80;
        server_name www.zhanghehe.com.cn;
        index index.html index.php;


        location / {
                root /data/nginx/html;
        }

        location ~* .php$ {
                fastcgi_pass 192.168.80.11:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME   /data/apps$fastcgi_script_name;
        }
}

我们可以找一个客户端访问一下www.zhanghehe.com.cn/bma/index.php,结果是这样的,如下所示:


image-20200228164823643

登录界面倒是加载出来了,但是图片却没有加载出来,这是为什么呢?仔细看我们在nginx代理上的配置,动态请求都让192.168.80.11去处理了,动态请求都是php结尾的,但是图片文件可并不是php结尾的哟,所以对于图片文件的请求根本都没有发送到192.168.80.11这台主机,而是去nginx代理这台主机的主目录/data/nginx/html去找了,但是这台主机的这个目录里面并没有phpmyadmin的图片文件,怎么办?很简单,从192.168.80.11这台主机上复制一台过来便是了,如下所示:

//注意,这里面的路径最好和php-fpm保持一致。
[root@n-proxy html]# ls
index.html  phpMyAdmin-4.0.5-all-languages
[root@n-proxy html]# pwd
/data/nginx/html
[root@n-proxy html]# ln -sv phpMyAdmin-4.0.5-all-languages/ pma
‘pma’ -> ‘phpMyAdmin-4.0.5-all-languages/’

我们再次访问图片就会正常加载出来了,输入root,密码就是数据库的密码,就可以登录上数据库了。

动静分离

server {
        listen 80;
        server_name www.zhanghehe.com.cn;
        index index.html index.php;


        location / {
                proxy_pass http://192.168.80.12;
        }

        location ~* .php$ {
                fastcgi_pass 192.168.80.11:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME   /data/apps$fastcgi_script_name;
        }

}
~  
//注意,这里面的路径最好和php-fpm保持一致。
[root@n-jingtai html]# ls
index.html  phpMyAdmin-4.0.5-all-languages
[root@n-jingtai html]# pwd
/data/nginx/html
[root@n-jingtai html]# ln -sv phpMyAdmin-4.0.5-all-languages/ pma
‘pma’ -> ‘phpMyAdmin-4.0.5-all-languages/’
//测试一下、
[root@client ~]# ab -c 100 -n 4000 http://192.168.90.10/index.php
Requests per second:   500 [#/sec] (mean)

加速

//http段
fastcgi_cache_path /data/nginx/fcgicache levels=2:2:2 keys_zone=fcache:10m max_size=2g;
vim /etc/nginx/conf.d/nginx_proxy.conf 

server {
        listen 80;
        server_name www.zhanghehe.com.cn;
        index index.html index.php;


        location / {
                root /data/nginx/html;
                proxy_pass http://192.168.80.12;
        }

        location ~* .php$ {
                fastcgi_pass 192.168.80.11: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;
        }

}
//测试一下,加了缓存之后效果显著
[root@client ~]# ab -c 100 -n 4000 http://192.168.90.10/index.php
Requests per second:   1690 [#/sec] (mean)

再加速

[root@n-proxy fcgicache]# cat /etc/nginx/conf.d/nginx_proxy.conf
server {
	listen 80;
	server_name www.zhanghehe.com.cn;
	index index.html index.php;
location / {
	root /data/nginx/html;
	proxy_pass http://192.168.80.12;
}

location ~* .php$ {
	fastcgi_pass 192.168.80.11:9000;
	fastcgi_index index.php;
	include fastcgi_params;
	fastcgi_param SCRIPT_FILENAME	/data/apps$fastcgi_script_name;
	fastcgi_keep_conn on;   #持久连接
	
	fastcgi_cache fcache;
	fastcgi_cache_key $request_uri;
	fastcgi_cache_valid 200 302 10m;
	fastcgi_cache_valid 301 1h;
	fastcgi_cache_valid any 1m;
    }

location ~* ^/(status|ping)$ { #状态页也要定向到后端的php-fpm
	include fastcgi_params;
	fastcgi_pass 192.168.80.11:9000;
	fastcgi_param ACRIPT_FILENAME $fastcgi_script_name;
	}

}
//再测试,效果明显
[root@client ~]# ab -c 100 -n 4000 http://192.168.90.10/index.php
Requests per second:   2000 [#/sec] (mean)
原文地址:https://www.cnblogs.com/yizhangheka/p/12380312.html