在 Nginx 中,你可以使用server
块和location
指令来将泛解析的域名绑定到特定的子目录,以下是一个示例配置,展示了如何实现这一点:
假设你有一个泛解析的域名*.example.com
,并且希望将其请求重定向到相应的子目录,例如/var/www/html/subdir1
、/var/www/html/subdir2
等。
示例配置
server { listen 80; server_name ~^(?<subdomain>.+)\.example\.com$; root /var/www/html; location / { # 使用变量 $subdomain 动态设置根目录 try_files /${subdomain}$uri /${subdomain}$uri/ /index.html; } }
解释
1、listen 80;
: 监听 HTTP 端口 80。
2、server_name ~^(?<subdomain>.+)\.example\.com$;
: 使用正则表达式匹配泛解析的域名,并捕获子域名部分。
3、root /var/www/html;
: 设置根目录为/var/www/html
。
4、location / { ... }
: 定义根路径的处理方式。
5、try_files /${subdomain}$uri /${subdomain}$uri/ /index.html;
: 尝试访问/var/www/html/{subdomain}/{request_uri}
,如果找不到文件或目录,则返回index.html
。
注意事项
确保你的 Nginx 版本支持正则表达式捕获组(Nginx 1.7.9+)。
如果你需要处理 HTTPS,请确保添加listen 443 ssl;
并配置 SSL 证书。
根据你的实际需求调整root
和try_files
指令。
完整示例
以下是一个完整的 Nginx 配置文件示例:
http { server { listen 80; server_name ~^(?<subdomain>.+)\.example\.com$; root /var/www/html; location / { try_files /${subdomain}$uri /${subdomain}$uri/ /index.html; } } }
这个配置会将所有*.example.com
的请求根据子域名动态地映射到相应的子目录。sub1.example.com/file.txt
会被映射到/var/www/html/sub1/file.txt
。