示意图:
动静分离是指将动态内容和静态内容分开处理的一种方式。通常,动态内容是指由服务器端处理的,例如动态生成的网页、数据库查询等。静态内容是指不需要经过服务器端处理的,例如图片、CSS、JavaScript文件等。通过将动态内容和静态内容分开处理,可以提高服务器的性能和响应速度。
在动静分离中,通常将Nginx作为前端服务器,将静态内容直接由Nginx处理并返回给客户端,而动态内容则交给后端服务器(如应用服务器)处理。Nginx可以通过配置来指定哪些请求是静态内容,这样它就可以直接从磁盘中读取并返回相应的文件,而不需要将请求转发给后端服务器。
- server {
- listen 80;
- server_name example.com;
-
- # 静态html文件处理
- location / {
- root html;
- index index.html index.htm;
- }
-
- # 静态图片文件处理
- location /picture {
- root resources;
- index index.html index.htm;
- }
-
- # 动态请求转发给后端服务器
- location /api {
- proxy_pass http://backend_server;
- }
- }
root和alias指令都用于定义服务器文件系统中用于处理请求的根目录,但它们之间有一些关键区别:
举例:(建议通过案例理解)
文件系统结构:
- /var/www/html
- |_ index.html
- |_ images
- |_ image1.jpg
- |_ ...
请求路径都为:/images/pic.jpg,希望获得/var/www/html/image1目录下文件,讲述4种配置方式:
- server {
- location /images/ {
- root /var/www/html;
- }
- }
- server {
- location /images/ {
- root relative/path/to/html;
- }
- }
- server {
- location /images/ {
- alias /var/www/html/images/;
- }
- }
- server {
- location /images/ {
- alias relative/path/to/html/images;
- }
- }
匹配规则:
匹配顺序: