nginx 泛域名解析 实现 多域名动态网站内容

假设域名为 mydomain.net

nginx 如何实现多子域名,且各域名网站内容动态?

1、添加泛域名解析

nginx 泛域名解析 实现 多域名动态网站内容

2、监听

listen 80;
server_name  *.mydomain.net;

3、获取子域名名称

  set $subdomain '';
  if ($host ~* ((?!m).+).mydomain.net) {
    set $subdomain $1;
  }

4、子域名匹配网站内容

这一块有两种实现:

1)直接将子网站内容,放在nginx目录下,目录结构匹配 $subdomain

proxy_pass https://mydomain.net/$subdomain/;

这种对于类似建站服务显然不适用;多台负载时,也比较麻烦;内容有改动时,需上传

2)将 $subdomain 写入 cookie,一个(壳)页面,根据 $subdomain 值,动态加载内容

下面就是该实现的 nginx 配置

location / {
    proxy_pass https://mydomain.net;
    proxy_set_header Host      $proxy_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #解决path为/
    proxy_set_header X-Forwarded-Proto $scheme;
    #写cookie,如需指定domain,必需 “同源”
    add_header Set-Cookie 'x_domain=$subdomain;path=/';
  }

 x_domain 即为 cookie name

nginx 泛域名解析 实现 多域名动态网站内容

5、总览

nginx 泛域名解析 实现 多域名动态网站内容