Nginx配置admin子域名跳转主域名排除/login路径的方案求助
Nginx 子域名路径跳转配置调整方案
调整后完整配置
# 主域名服务块 server { listen 80; server_name website.com; add_header Content-Type text/plain; return 200 "main"; } # admin子域名专属服务块,优先级高于泛解析块 server { listen 80; server_name admin.website.com; add_header Content-Type text/plain; # 精确匹配根路径,触发跳转至主域名 location = / { return 301 https://website.com/; } # 匹配所有/login开头的路径(含子路径、带参数场景),直接放行不跳转 location ^~ /login { # 此处替换为你实际的站点业务配置,比如root、反向代理、fastcgi_pass等,示例仅返回测试内容 return 200 "admin login path: $request_uri"; } # 其他路径默认配置,可根据需求修改 location / { # 示例返回子域名非登录路径内容,若需要其他路径也跳转主域名,替换为下行内容即可 # return 301 https://website.com$request_uri; return 200 "admin other path: $request_uri"; } } # 泛解析子域名服务块,优先级最低 server { listen 80; server_name *.website.com; return 301 $scheme://website.com$request_uri; }
配置说明
- 服务块优先级:Nginx匹配
server_name时会优先选择完全匹配的块,因此admin.website.com的专属配置不会被下方的泛解析规则覆盖。 - 根路径规则:
location = /是精确匹配规则,仅当访问https://admin.website.com/根路径时触发跳转,不会影响其他路径的匹配。 - 登录路径规则:
location ^~ /login是前缀匹配规则,只要请求路径以/login开头,无论后续是否跟子路径、URL参数都会命中该规则,保持子域名访问不跳转。
内容的提问来源于stack exchange,提问作者Giuls
相关产品推荐
相关产品推荐

