Wave Spread...

使用 LNMPA 架构实现动静分离

分类:Linux 评论: 0

使用 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

安装软件

# yum install httpd nginx

安装 PHP

本文使用 WEBTATIC 第三方源,其他第三方源配置方式接近,但是文件位置和命名可能略有不同。

配置仓库

# yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装软件

# yum install mod_php72w php72w-opcache

关闭 Apache 、 Nginx

# 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 进行分离,然后将剩余的全部请求下发至后端阿帕奇,不能使用上面的配置,因为伪静态后的请求会请求 HTML 页面会导致 NGINX 误以为是静态资源导致错误。

相关链接

回复