使用 LNMPA 架构实现动静分离
后知后觉 暂无评论

使用 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 静态页面导致错误。

附录

相关链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。