You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置求助:如何实现含客户名变量的URL路由规则?

解决Nginx动态客户名变量的路由问题

我来帮你搞定这个带动态客户名的Nginx路由配置!核心是利用正则捕获变量,同时注意规则的匹配顺序——更具体的路径规则一定要放在前面,避免被宽泛的规则提前匹配。

核心配置示例

假设你的应用是静态文件或PHP项目,下面是直接映射到本地目录的配置:

server {
    # 监听端口和域名根据你的实际情况调整
    listen 80;
    server_name your-domain.com;

    # 优先匹配带/resident的客户路径:/:customer/resident/*
    location ~ ^/([^/]+)/resident(.*)$ {
        root /var/www/app2;
        # 根据应用类型调整try_files规则:
        # 静态文件用这个:try_files $2 =404;
        # PHP单页应用用这个:try_files $2 $2/ /index.php$is_args$args;
        try_files $2 $2/ /index.php$is_args$args;
    }

    # 匹配其他客户路径:/:customer/*
    location ~ ^/([^/]+)(.*)$ {
        root /var/www/app1;
        # 同样根据应用类型调整try_files
        try_files $2 $2/ /index.php$is_args$args;
    }

    # 如果需要保留原有不带customer的路径访问(可选)
    location /resident {
        root /var/www/app2;
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location / {
        root /var/www/app1;
        try_files $uri $uri/ /index.php$is_args$args;
    }
}

配置解释

  1. 正则捕获变量:

    • ^/([^/]+)/resident(.*)$ 中的 ([^/]+) 就是你的:customer变量,它会匹配任意不含斜杠的字符串(符合URL路径的规范);(.*) 捕获/resident后面的剩余路径。
    • 比如访问/acme/resident/dashboard,Nginx会捕获acme作为客户名,/dashboard作为剩余路径,然后结合root /var/www/app2,实际访问/var/www/app2/dashboard,完美对应你原来的app2路径。
  2. 规则顺序:
    带/resident的规则必须放在前面,因为正则location是按顺序匹配的——如果先匹配宽泛的/:customer/*规则,/:customer/resident/*就会被错误路由到app1。

  3. 适配后端服务(反向代理场景):
    如果你的app是部署在后端的服务(比如Node.js、Python服务),把root换成proxy_pass即可:

    location ~ ^/([^/]+)/resident(.*)$ {
        proxy_pass http://app2-backend:3000$2;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    
    location ~ ^/([^/]+)(.*)$ {
        proxy_pass http://app1-backend:8000$2;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    

测试小技巧

配置完成后,用nginx -t检查配置语法是否正确,然后nginx -s reload重启服务,再用curl测试:

# 测试app1的客户路径
curl http://your-domain.com/acme/dashboard
# 测试app2的客户路径
curl http://your-domain.com/acme/resident/login

内容的提问来源于stack exchange,提问作者Falci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:49:22