系统版本:CentOS Linux release 7.4.1708 (Core)
php版本:PHP 7.2
nginx版本:nginx-1.12.2
数据库版本:MariaDB 10
WordPress版本:4.9.4
关闭防火墙与selinux
架构图:
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
>PS:要注意的一点时,在以前安装PHP解析环境时都是用的nginx+php,他们之间是通过php-fpm(fastcgi协议)通
>信的,在安装PHP时安装php72w-fpm这个依赖包,因为nginx与PHP之间只能以这种方式通信,但httpd与PHP可以
>通过mod方式进行通行,所以AP组合需要安装mod_php这个依赖包,httpd便能解析php了,虽然httpd也能通过
>php-fpm来解析PHP,但需要另外配置。
在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文件了。
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.cnsystemctl start nginx #启动nginx服务
在浏览器分别输入http://www.ready.cn/test.html和http://www.ready.cn/phpinfo.php并显示与测试步骤1,2相同的界面就说明nginx以作为反向代理工作了
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
虽然以上步骤完成后已经可以成功的将动态与静态内容分离到后端不同服务器进行处理,但还需要优化使性能更完整。
在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发至后端服务器
}
}
yum install -y httpd-tools
将/etc/nginx/conf.d/proxy.conf下缓存选项注释掉
用另一台主机模拟客户机访问服务器ab -c 100 -n 2000 http://www.ready.cn/
可看出每秒仅20多次的处理量
ab -c 100 -n 2000 http://www.ready.cn/
每秒竟有1800多次的处理量!
转载于:https://blog.51cto.com/13322786/2161339