nginx反向代理对比开启缓存前后的效果

一、实验环境:

1.各软件版本:

系统版本:CentOS Linux release 7.4.1708 (Core)
php版本:PHP 7.2
nginx版本:nginx-1.12.2
数据库版本:MariaDB 10
WordPress版本:4.9.4
关闭防火墙与selinux

2.实验架构及IP分配:

架构图:

nginx反向代理一台:
IP:192.168.1.105 10.66.16.111安装nginx
nginx WEB服务器一台
IP:10.66.16.11 安装nginx
Apache+PHP服务器一台
IP:10.66.16.22 安装httpd+PHP
MySQL服务器一台
IP:10.66.16.33 安装MariaDB

3.默认各服务器已安装好所需软件,不再详述安装过程。

>PS:要注意的一点时,在以前安装PHP解析环境时都是用的nginx+php,他们之间是通过php-fpm(fastcgi协议)通
>信的,在安装PHP时安装php72w-fpm这个依赖包,因为nginx与PHP之间只能以这种方式通信,但httpd与PHP可以
>通过mod方式进行通行,所以AP组合需要安装mod_php这个依赖包,httpd便能解析php了,虽然httpd也能通过
>php-fpm来解析PHP,但需要另外配置。

二:测试

1.nginx WEB服务器:

在10.66.16.11上安装完nginx并启动服务后,创建测试html文件
vim /usr/share/nginx/html/test.html

<h1>nginx web server</h1>

浏览器输入10.66.16.11/test.html并显示以下页面

2.Apache+PHP服务器
在10.66.16.22上安装完成Apache+PHP并启动服务后,创建phpinfo测试文件
vim /var/www/html/phpinfo.php

phpinfo();
?>

浏览器输入10.66.16.22/phpinfo.php并显示以下界面就说明Apache可以正常解析PHP文件了。

3.测试nginx反向代理功能,其实配置起来非常简单。

vim /etc/nginx/conf.d/proxy.conf

server {
        listen 80;
            server_name www.ready.cn;
            index index.php;
            location / {
                    }
            location ~* \.(png|jpg|jepg|gif|bmp|html)$ {
                    proxy_pass http://10.66.16.11;
                    }
            location ~* \.php$ {
                    proxy_pass http://10.66.16.22;
                    }
    }

本机的hosts文件添加本地域名重定向规则192.168.1.105 www.ready.cn
systemctl start nginx #启动nginx服务
在浏览器分别输入http://www.ready.cn/test.html和http://www.ready.cn/phpinfo.php并显示与测试步骤1,2相同的界面就说明nginx以作为反向代理工作了

4.配置数据库

mysql_secure_installation #初始化数据库,设置root密码,匿名用户权限等
mysql -uroot -p123456 #登入数据库进行用户及库的创建与配置

GRANT ALL PRIVILEGES ON . TO 'mysql'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION; #创建账户mysql,密码为123456,并允许任意IP访问此账户数据库,权限为ALL
CREATE DATABASE wordpress; #创建名为wordpress的库,安装完WordPress后会要求在数据库创建库,这里先创建好
quit

将下载好的WordPress放入nginx反向代理服务器,nginx服务器,AP服务器相应的主目录,具体过程这里不再赘述。具体可参考另外两篇博文。https://blog.51cto.com/13322786/2159094

三:对nginx反向代理服务器做功能补充与优化

虽然以上步骤完成后已经可以成功的将动态与静态内容分离到后端不同服务器进行处理,但还需要优化使性能更完整。

1.启动proxy缓存功能

在proxy上编辑主配置文件
vim /etc/nginx/nginx.conf
在http模块下添加如下规则:
proxy_cache_path /data/nginx/cache levels=1:1:1 keys_zone=pcache:10m max_size=2g; #指定缓存目为/data/nginx/cache,目录结构为3级,每级16个子目录,键表名为pcache大小为10m,缓存最大占用空间为2g,目录需手动创建
定义完缓存参数后,需要在定义的主机上调用缓存
vim /etc/nginx/conf.d/proxy.conf

server {
            listen 80;
            server_name www.ready.cn;
            index index.php;
            proxy_cache pcache; #调用缓存
            proxy_cache_key $request_uri; #把什么当键
            proxy_cache_methods GET HEAD; #缓存哪些项
            proxy_cache_valid 200 302 10m; #指定200 302响应码的内容缓存10分钟
            proxy_cache_valid 404      1m; #指定404响应码的内容缓存1分钟
            proxy_cache_use_stale http_502; #允许502响应码的内容使用过期缓存
            proxy_set_header X-Real-IP $remote_addr;  #将实际的客户端IP发送至后端服务器
            add_header X-Via $server_addr; #将代理服务器的IP发至后端服务器
            location / {
                    proxy_pass http://10.66.16.22:80/;
                    }
            location ~* \.(png|jpg|jepg|gif|bmp|html)$ {
                    proxy_pass http://10.66.16.11:80;
                    proxy_set_header X-Real-IP $remote_addr;  #将实际的客户端IP发送至后端服务器
                    add_header X-Via $server_addr; #将代理服务器的IP发至后端服务器
                    }
            location ~* \.php$ {
                    proxy_pass http://10.66.16.22:80;
                    proxy_set_header X-Real-IP $remote_addr;  #将实际的客户端IP发送至后端服务器
                    add_header X-Via $server_addr; #将代理服务器的IP发至后端服务器
                    }
    }

四.用ab进行压测,比较开启缓存功能和没有开启缓存功能的区别

1.安装压测工具:httpd-tools

yum install -y httpd-tools

2.关闭缓存功能并进行压测

将/etc/nginx/conf.d/proxy.conf下缓存选项注释掉
用另一台主机模拟客户机访问服务器
ab -c 100 -n 2000 http://www.ready.cn/
可看出每秒仅20多次的处理量

3.开启缓存功能并测试

ab -c 100 -n 2000 http://www.ready.cn/
每秒竟有1800多次的处理量!

所以缓存功能对nginx来说是非常有用的功能

转载于:https://blog.51cto.com/13322786/2161339

你可能感兴趣的:(nginx反向代理对比开启缓存前后的效果)