子域的复杂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;
}
@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@

猜你在找的Nginx相关文章