我需要设置一个虚拟主机来运行我的users.example.com
网站。它需要通过 php-fpm 支持 PHP。想法是进行如下映射:
users.example.com/~user1/folder/file.php
-> /home/user1/www/folder/file1.php
users.example.com/user1/folder/file.php
-> /home/user1/www/folder/file1.php
users.example.com/~user2/stuff/about.html
->/home/user2/www/stuff/about.html
等等。出于安全原因,每个用户文件都在不同的 PHP-FPM 池下运行(因此,不同的 fpm 套接字)。套接字具有完整路径/var/run/{USERNAME}_fpm.sock
。我该如何进行此服务器配置?
最初的想法是为每个用户设置一个server { }
,带有server_name users.example.com;
和一个 ,location
带有root
。我想知道这是否可行,以及如何设置才能使它工作。
答案1
我自己还没有测试过,但类似这样的方法可能会有效
server {
server_name users.example.com;
listen 80;
location ~ /(?:~)?(?<user>[a-zA-Z0-9]+)/ {
alias /home/$user/www/;
fastcgi_pass /var/run/$user_fpm.sock;
}
}
因此,在位置行中,我们将用户名捕获到 $user 变量中,然后将该变量用于alias
和fastcgi_pass
指令。如果您想在用户主目录中包含更多字符,还可以扩展正则表达式。
该部分与路径名中的(?:~)?
可选字符匹配。~