linux

Nginx怎样实现动静分离

小樊
49
2025-10-29 14:44:59
栏目: 编程语言

Nginx 实现动静分离主要是通过配置 Nginx 的 location 块来区分处理静态资源和动态请求。静态资源通常是指 CSS、JavaScript、图片等文件,而动态请求通常是指需要后端服务器处理的 PHP、Java 等动态内容。

以下是一个简单的 Nginx 配置示例,展示了如何实现动静分离:

http {
    # ... 其他配置 ...

    server {
        listen 80;
        server_name example.com;

        # 配置静态资源的根目录
        root /var/www/static;

        # 处理静态资源请求
        location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
            expires 30d;
            add_header Cache-Control "public";
        }

        # 处理动态请求,反向代理到后端服务器
        location / {
            proxy_pass http://backend_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_set_header X-Forwarded-Proto $scheme;
        }
    }
}

在这个配置中:

  1. root /var/www/static; 指定了静态文件的根目录。
  2. location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ 是一个正则表达式匹配块,用于匹配所有以 .jpg, .jpeg, .png, .gif, .ico, .css, .js 结尾的请求,这些请求被认为是静态资源请求。对于这些请求,Nginx 直接从指定的根目录提供文件,并设置了一些缓存相关的 HTTP 头。
  3. location / 是默认的请求处理块,用于匹配所有其他请求,这些请求被认为是动态请求。在这个例子中,使用 proxy_pass 指令将请求反向代理到后端服务器(例如 PHP-FPM、Tomcat 等)。

通过这种方式,Nginx 可以有效地将静态资源和动态请求分开处理,从而提高网站的性能和可扩展性。

0
看了该问题的人还看了