使用 LNMPA 架构实现动静分离,使用 Apache 解析动态请求,使用 Nginx 处理静态资源,发挥各自的优势。
先决条件
配置 NGINX 官方源
# cat >> /etc/yum.repos.d/nginx.repo<<'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgkey=http://nginx.org/keys/nginx_signing.key
gpgcheck=1
enabled=1
EOF
配置 APACHE 第三方源
使用此命令可以一键配置仓库(仅 CentOS ),需要使用 wget
命令。
# cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo
配置 PHP 第三方源
本文使用 WEBTATIC
第三方源,其他第三方源配置方式接近,但是文件位置和命名可能略有不同。
# yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安装软件
# yum install httpd nginx
# yum install mod_php72w php72w-opcache
暂时关闭
# systemctl stop httpd
配置动静分离
修改监听端口
因为监听端口冲突,因此修改阿帕奇的监听端口,并且阿帕奇只解析动态请求,因此不需要对外暴露,只监听在本地即可。
# vim /etc/httpd/conf/httpd.conf
查找以下字段
#Listen 12.34.56.78:80
注释掉并添加一行
Listen 0.0.0.0:8080
小贴士:此处 8080
为示例,请根据实际情况进行调整。
写入 NGINX 反代参数
# cat > /etc/nginx/proxy_params < 'EOF'
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
EOF
写入 NGINX 反代配置
# cat /etc/nginx/conf.d/test.conf
server {
listen 80;
server_name 10.0.0.200;
root /var/www/html;
index index.html index.php;
access_log on;
location ~ .*\.php(\/.*)*$ {
proxy_pass http://127.0.0.1:8080;
include proxy_params;
}
}
启动服务配置产品即可
# systemctl start nginx httpd
注意事项
部分产品中需要实现全局伪静态,此种情况下需要先实现动静分离,将全部的静态资源由 NGINX 的 location 进行分离,然后将剩余的全部请求下发至后端 Apache HTTPD,不能使用上面的配置,因为伪静态后的请求会将动态请求误操作去请求 HTML 静态页面导致错误。
附录
相关链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2018-09-27 08:52 AM