我目前在我的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; }
@H_404_8@我确信有一种更有效的方法可以做到这一点,但我需要更改此规则,以便任何对* .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 ~^(?@H_404_8@