当前位置: 首页 > news >正文

Nginx实现动静分离配置

目录

静态资源

动态资源

动静分离

代理配置

 静态资源配置

动态资源配置

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
 

现在访问动态页面 

 

http://www.dtcms.com/a/99934.html

相关文章:

  • JavaScript 网页开发设计案例:构建动态看板任务管理器 (Kanban Board)
  • 飞致云荣获“Alibaba Cloud Linux最佳AI镜像服务商”称号
  • GPT-4o 原生图像生成技术解析:从模型架构到吉卜力梦境的实现
  • 代码规范之空行思路和原则
  • python虚拟环境使用
  • 1500 字节 MTU | 溯源 / 技术权衡 / 应用影响
  • 代码随想录刷题day56|(回溯算法篇)46.全排列(非去重)、47.全排列 II(去重)
  • UE4学习笔记 FPS游戏制作32 主菜单,暂停游戏,显示鼠标指针
  • 学习threejs,使用Sprite精灵、SpriteMaterial精灵材质
  • 前端全局编程和模块化编程
  • [笔记.AI]大模型训练 与 向量值 的关系
  • vue3 + ant-design-vue4实现Select既可以当输入框也可以实现下拉选择
  • sqli-labs学习记录8
  • Spring 项目中跨数据源(多数据源)调用时 @DS 注解失效或不生效
  • Nginx RTMP 接收模块分析 (ngx_rtmp_receive.c)
  • 【数学建模】(智能优化算法)元胞自动机在数学建模中的应用
  • 第十四节 MATLAB决策制定、MATLAB if 语句语法
  • MATLAB 控制系统设计与仿真 - 30
  • Java简单生成pdf
  • 在Wincc中使用Dapper读写数据库
  • Go/Python(Nuitka)/Rust/Zig 技术对比
  • 记一次关于云的渗透过程
  • Git配置
  • C# 的Lambda表达式‌常见用法和示例
  • C++中常见符合RAII思想的设计有哪些
  • c++使用iconv进行字符编码格式转换
  • 小红书多账号运营:如何实现每个账号独立 IP发布文章
  • ubuntu 安装 postgresql
  • Dubbo(23)如何配置Dubbo的服务消费者?
  • 蓝桥杯_DS18B20温度传感器