首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx永久重定向到某些子目录的不同url

Nginx永久重定向到某些子目录的不同url
EN

Stack Overflow用户
提问于 2017-09-27 17:20:11
回答 2查看 818关注 0票数 0

我有两个Nginx服务器提供来自未知父域的两个不同子域的静态文件,比如说<env>.foo.<domain>.com<env>.bar.<domain>.com

我希望为<env>.foo.<domain>.com配置nginx服务器,以便如果url包含子目录catdog,我希望重定向到<env>.bar.<domain>.com/<subdirectory>/<rest of url>

例如。

代码语言:javascript
运行
复制
http://dev.foo.mydomain1.com/cat/22 -> http://dev.bar.mydomain1.com/cat/22
http://dev.foo.mydomain1.com/dog/22 -> http://dev.bar.mydomain2.com/dog/22
http://dev.foo.mydomain2.com/dog/22 -> http://dev.bar.mydomain2.com/dog/22
http://dev.foo.mydomain1.com/bird/22 -> [no redirect]

域的<env><domain>部分是动态的,这取决于部署服务器的环境,但在两个nginx盒之间是常见的。

我想象它是这样的:

代码语言:javascript
运行
复制
server {
  location ??? /(cat|dog) {
    return 301 $scheme://???/$1$is_args$query_string;
  }
}

但是我的nginx技能还不是很好。

EN

Stack Overflow用户

发布于 2017-09-27 21:04:25

下面是你能做的

代码语言:javascript
运行
复制
http {

map $http_host $host_to_send_to {
  default $http_host;
  dev.foo.mydomain1.com    dev.bar.mydomain1.com;
  dev.foo.mydomain2.com    dev.bar.mydomain2.com;
}

server {
  server_name dev.foo.mydomain1.com;
  location /(cat|dog) {
    return 301 $scheme://$host_to_send_to$request_uri$is_args$query_string;
  }
}
}

您需要将其添加到需要处理重定向的每个服务器块中。

编辑-1:动态主机名处理

您可以动态地处理主机名,也可以动态处理用户re模式和组。

代码语言:javascript
运行
复制
map $hostsname $host_to_send_to {
  default $http_host;
  ~(.*).foo.mydomain1.com    $1.bar.mydomain1.com;
  ~(.*).foo.mydomain2.com    $1.bar.mydomain2.com;
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46444055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档