Nginx实现动静分离配置

发布于:2025-03-27 ⋅ 阅读:(33) ⋅ 点赞:(0)

目录

静态资源

动态资源

动静分离

代理配置

 静态资源配置

动态资源配置

python与php对比

PHP的下载


动态资源和静态资源是在网络和Web开发中常用的两个概念,它们有以下基本定义和区别:

静态资源

  • 静态资源是指在服务器上存储的不会随着用户请求或时间变化而改变的文件或内容。
  • 静态资源的特点是不依赖于用户的请求动态生成,服务器直接将文件内容发送给客户端,通常由Web服务器(如Nginx、Apache)直接提供。

动态资源

动态资源则是指在服务器端根据用户请求或其他数据生成的内容。

动态资源通常需要通过服务器端脚本语言(如PHP、Python、Node.js)或者专门的Web应用程序(如Django、Flask)来处理用户请求,生成内容,并将结果发送给客户端。

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。 在动静分离的tomcat的时候比较明显,因为tomcat解析静态很慢,其实这些原理的话都很好理解,简单来说,就是使用正则表达式匹配过滤,然后交个不同的服务器,动态资源交给动态服务器,静态资源交给静态服务器。

准备3台机器,一台做反向代理,其它两台分别处理动态文件和静态文件。

代理配置

vim /etc/nginx/conf.d/proxy.conf

 upstream static{                                配置nginx反向代理uptream
        server 192.168.80.146:80 weight=1 max_fails=1 fail_timeout=60s;
}
upstream php{
        server 192.168.80.141:80 weight=1 max_fails=1 fail_timeout=60s;
}
server{
        listen 80;
        server_name localhost;
        location ~ \.(php|jsp)$ {                   动态资源加载       这里$和{之间有空格,切记
                proxy_pass http://php;
                proxy_set_header Host $host:$server_port;
                proxy_set_header X_Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location ~ .*\.(html|gif|jpg|png|bmp|swf|css|js|txt|mp4)$ {          静态资源加载
                 proxy_pass http://php;
                proxy_set_header Host $host:$server_port;
                proxy_set_header X_Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

 静态资源配置

vim /etc/nginx/conf.d/jingtai.conf

server{
        listen 80;
        server_name localhost;
        location ~ \.(html|jpg|png|js|css|gif|bmp|jpeg|txt|mp4){
                root /var/www/nginx;   静态网页目录
                expires   1h;   静态资源缓存时间
        }
}

 游览器访问

 

或者[root@localhost nginx]# curl -I http://192.168.80.146/风景.jpg

 

动态资源配置

 vim /etc/nginx/conf.d/php.conf

server{
        listen 80;
        server_name localhost;
        root /home/nginx/html;
        location ~ \.php$ {
                fastcgi_pass unix:/run/php-fpm/www.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}
 

Nginx本身无法直接解析PHP脚本,需通过FastCGI协议将PHP请求转发给PHP-FPM(FastCGI进程管理器)处理。

注意:这里使用到的PHP脚本并不是唯一的方法

还可以使用python,如果使用python进行动态请求的话需要安装Nginx的uwsgi模板

python与php对比

PHP的下载

PHP的下载有点麻烦

首先下载第三方库(epel,remi)

sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

启用PHP模板

sudo dnf module reset php

sudo dnf module enable php:remi-7.4

安装PHP和相关扩展
sudo dnf -y install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json

启动php-fpm服务

最后检查一下PHP版本

php -v

切记要根据自己的虚拟机的版本下载epel,remi库,我的虚拟机是9.5版本所以下载的epel,remi库是9,不然会报错

查看虚拟机版本

[root@localhost ~]# cat /etc/redhat-release

vim /etc/php-fpm.d/www.conf +24

在这附近找到并按照如下修改这两个参数

user = nginx

group = nginx

创建index.php测试文件并输入测试代码

[root@localhost ~]# cat > /home/nginx/html/index.php << EOF
> <?php
> phpinfo();
> ?>
> EOF
 

现在访问动态页面