当前位置:   article > 正文

Nginx 实战:Nginx动静分离实战

Nginx 实战:Nginx动静分离实战

在Nginx实战中,动静分离是一种常见的优化策略,旨在通过区分动态请求和静态请求,分别交给不同的服务器或服务去处理,以提高网站性能和服务器资源利用率。以下是如何在Nginx中配置动静分离的基本步骤:

1. 配置静态文件服务

在Nginx配置文件(如/etc/nginx/nginx.conf/etc/nginx/conf.d/目录下的某个配置文件)中,首先定义一个处理静态文件的location块:

server {
    listen 80;
    server_name yourdomain.com;

    # 静态文件配置
    location /static/ {
        alias /var/www/yourapp/static/;
        expires 30d; # 设置静态资源缓存有效期
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这里,Nginx会将所有以/static/开头的请求映射到本地服务器的/var/www/yourapp/static/目录下,直接返回静态文件。

2. 配置动态请求转发

接着,配置动态请求转发到后端应用服务器,例如一个运行着Python Flask、Django,或者Java Spring Boot应用的服务器:

location / {
    proxy_pass http://backend_app_server; # 后端应用服务器地址
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect off;
    proxy_read_timeout 60;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这里的location /匹配所有非静态资源的请求,并将它们通过反向代理转发到backend_app_server上处理。

3. 高级动静分离

对于更复杂的场景,可以依据文件扩展名、URI路径等进一步细化动静分离:

location ~* \.(jpg|jpeg|gif|png|ico|css|js)$ {
    alias /var/www/yourapp/static/;
    expires 30d;
}

location / {
    if (!-e $request_filename){
        proxy_pass http://backend_app_server;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这里,基于文件扩展名的正则表达式将特定类型的静态文件直接服务,其余请求则先判断文件是否存在,如果不存在,则视为动态请求,转发给后端应用服务器。

4. 测试与应用配置

完成配置后,使用nginx -t命令检查配置文件语法,确认无误后执行nginx -s reload命令重新加载配置,使新的设置生效。

通过以上的配置,Nginx就成功实现了动静分离,动态请求被转发至后端应用服务器处理,静态资源则直接由Nginx服务器提供,大大提高了服务器处理能力和网站响应速度。同时,Nginx还可以根据需要配置缓存策略,进一步提升静态资源的访问性能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/303232
推荐阅读
相关标签
  

闽ICP备14008679号