我想在 adduser 脚本中添加一个条件来更新 nginx.conf,以便它将 ~/www 加载为http://ip地址/~用户每当我创建一个新用户时。
当用户名为 www.domainname 时,它会将该域名托管在 ~/www 文件夹中。
是否有一个脚本可以做到这一点?
答案1
创建用户时,您无需向 nginx 添加任何内容。只需在服务器块中使用类似以下内容:
location ~ ^/~(.+?)(/.*)?$ {
alias /home/$1/www$2;
autoindex on;
}
检查你的发行版 /etc/skel
如果您 mkdir /etc/skel/www,则由 adduser(或您的发行版 adduser-script)创建的所有用户目录将默认具有此目录。
答案2
我偶然发现了这一点,接受的答案对我来说非常可疑。正如 Nick ODell 在接受的答案的评论中指出的那样,它可能容易受到目录遍历攻击。
更好的解决方案是在服务器块中有一个主 Web 根目录,然后使用从 Web 根目录到用户目录的符号链接。您可以让多个符号链接指向同一个目标目录:
/var/www/user1 -> /home/user1/www
/var/www/domainname -> /home/user1/www
这种方法也更适用于try_files
。