目录
动态资源和静态资源是在网络和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
现在访问动态页面