假设域名为 mydomain.net
nginx 如何实现多子域名,且各域名网站内容动态?
1、添加泛域名解析
2、监听
listen 80; server_name *.mydomain.net;
3、获取子域名名称
set $subdomain \'\'; if ($host ~* (\b(?!m\b).+)\.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
5、总览