Nginx_根据URL中的目录地址实现代理转发(动静态分离)

本文介绍了如何使用Nginx根据URL中的目录地址实现代理转发,实现动静态资源分离。当请求以/upload/开头时,请求被转发到上传服务器池;以/static/开头时,请求转发到静态服务器池;其他请求则默认由动态服务器池处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、根据URL中的目录地址实现代理转发(动静态分离)

需求:

1、当用户请求www.etiantian.org/upload/xx地址时,实现由upload上传服务器池处理请求。

2、当用户请求www.etiantian.org/static/xx地址时,实现由静态服务器池处理请求。

3、除此之外,对于其他访问请求,全都默认的动态服务器池处理请求。

了解了需求后,就可以进行upstream模块服务器池的配置了。

static_pools为静态服务池,有一个服务器,地址为10.0.0.9端口为80.

upstream static_pools {
        server 10.0.0.9:80 weight=1;
}

upload_pools为上传服务器池,有个服务器,地址为:10.0.0.10,端口为80.

upstream upload_pools {
               server 10.0.0.10:80 weight=1;
               }

default_pools默认的服务器池,即动态服务器池,有一个服务器,地址为10.0.0.11端口为80.

default_pools{
               server 10.0.0.11:80 weight=1;
               }

通过location或if语句把不同的URL(路径)请求,分给不同的服务器池处理:

将符合static的请求交给静态服务器池upload_pools配置如下:

location /static/ {
        proxy_pass http://static_pools;
        include proxy.conf;
        }

将符合upload的请求交给静态服务器池static_pools配置如下:

location /upload/ {
        proxy_pass http://upload_pools;
        include proxy.conf;
        }

将不符合上述规则的请求,默认全部交给动态服务池default_pools,配置如下:

location /default/ {
        proxy_pass http://default_pools;
        include proxy.conf;
        }

以if语句实现:

if ($request_uri ~*  "^/static/(.*)$")

{

         proxy_pass http://static_pools/$1;

}

if ($request_uri ~*  "^//upload/(.*)$")

{

        proxy_pass http://upload_pools/$1;

}

location / {

        proxy_pass http://default_pools;

        include proxy.conf;

}

下图是以location方式实现的配置文件。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值