Nginx配合Apache2实现动静分离

前言

之前介绍过Nginx与Apache2共存,但是也只是Nginx服务器作为前端,Apache2服务器作为后端,web页面请求由Nginx服务来进行转发出来,在根本上没有任何意义,不如直接使用Apache2。

我们的目的不是把所有的内容都由Apache2完成,再由Nginx转发,而是将静态页面请求由Nginx服务器自己来处理,动态页面请求则转发给后端的Apache2服务器来处理。

但是在网上查了很多资料,要么就是404要么就是重定向太多导致网页无法打开,很难找到一篇很实用的文章。

这边结合网上的相关资料,再基于自己的理解,实践出一份至少表面看上去是合格的教程。

步骤

之前的Nginx的配置文件为:

server {
    listen 80;
    index index.html index.htm index.nginx-debian.html index.php;
    server_name test.xxx.com;

    location / {
        proxy_pass_header Server;
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_redirect off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    access_log /var/log/nginx/test.xxx.com-access.log;
    error_log /var/log/nginx/test.xxx.com-error.log;    
}

查看目前服务器

打开Chrome按F12,输入网址,可以看到目前还是由Apache2完成所有请求的。

配置静态资源

修改Nginx的配置文件,在 location / { } 中加入你需要由Nginx的页面资源。

location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
    root /var/www/web;  #这边更改为你的静态资源目录
    expires 3d;
}

最终配置为:

server {
    listen 80;
    index index.html index.htm index.nginx-debian.html index.php;
    server_name test.xxx.com;

    location / {
        proxy_pass_header Server;
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_redirect off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
            root /var/www/web;  #这边更改为你网站的静态资源目录
            expires 3d;
        }
    }
    access_log /var/log/nginx/test.xxx.com-access.log;
    error_log /var/log/nginx/test.xxx.com-error.log;    
}

保存退出,重启Nginx。

systemctl restart nginx

成果

清空浏览器缓存后,重新打开浏览器,可以看到首页php还是Apache2,图片和css等都已经由Nginx进行处理了。

1. 首页index.php服务器为Apache2

2. jpg资源的服务器为Nginx

3. css资源的服务器为Nginx

结论

其实还有一种是 负载均衡 的设置,但是资源有限,无法深入研究。

至此我个人对这篇文章还是比较满意的,网上的太多教程都是原地照抄,缺少真正的实践,然后一传十、十传百,最终结果总是与自己的期望不符。记录一下,也可能是以后懂得多了再来看这篇文章,又会发现些错误的或者可以改进的地方~

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
滚动至顶部