您的位置 首页 Nginx

子域的复杂nginx重写规则

我目前在我的nginx.conf中有以下(hacky)重写规则,允许动态子域重定向到一个Django实例.

set $subdomain "";
set $subdomain_root "";
set $doit "";
if ($host ~* "^(.+)\.domain\.com$") {
    set $subdomain $1;
    set $subdomain_root "/profile/$subdomain";
    set $doit TR;
}
if (!-f $request_filename) {
    set $doit "${doit}UE";
}
if ($doit = TRUE) {
    rewrite ^(.*)$$subdomain_root$1;
    break;
}

我确信有一种更有效的方法可以做到这一点,但我需要更改此规则,以便任何对* .domain.com / media / *或* .domain.com / downloads / *的请求转到domain.com/ media / *和domain.com/downloads/*.

您可以使用正则表达式服务器名称(请参阅http://nginx.org/en/docs/http/server_names.html#regex_names)并直接将匹配组分配给变量$subdomain:

server {
  listen 80;
  listen 443;
  server_name ~^(?

关于作者: dawei

【声明】:金华站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

热门文章