我有 2 个域名 dev.domain.com 和 beta.domain.com。目前我有一个服务器部分(默认),其中包含一堆特定位置和规则。现在我需要密码保护 beta.domain.com。有没有办法做到这一点,而无需创建额外的服务器部分并基本上复制我的所有位置和其他规则?
一般来说,我想知道其他人如何管理复杂的 nginx 配置。他们只是复制部分(重复)还是以某种方式包含通用规则?
答案1
在多个服务器块之间共享配置的最简单方法是使用 include 指令。例如:
/etc/nginx/conf.d/mysite.inc:
#...locations and rules...
/etc/nginx/sites-available/dev.domain.com:
server {
server_name dev.domain.com;
root /path/to/root;
include /etc/nginx/conf.d/mysite.inc;
}
/etc/nginx/sites-available/beta.domain.com:
server {
server_name beta.domain.com;
root /path/to/root;
include /etc/nginx/conf.d/mysite.inc;
location / {
auth_basic "Authentication Required";
auth_basic_user_file /path/to/authfile;
}
}