Я обычно использую динамические vhosts для ngninx. Поэтому вы можете создать обслуживающий каталог, например, /var/www/
и внутри определить каталог, например, для каждого домена клиентских проектов, которые вы хотите развернуть.
/var/www/domain.tld
/var/www/subdomain.domain.tld
/var/www/otherproject.tld
/var/www/project.tld/public
, а затем в nginx вы определяете свой блок-сервер следующим образом
server {
# SSL configuration
listen 443 ssl http2 default_server; # managed by Certbot
listen [::]:443 ssl http2 default_server;
set $basepath "/var/www";
server_name ~^(\w+\.)?(?<base>\w+\.\w+)$;
if ( -d $basepath/$host) {
set $rootpath $basepath/$host;
}
if ( -d $basepath/$host/public ) {
set $rootpath $basepath/$host/public;
}
if ( !-d $basepath/$host ) {
set $rootpath $basepath/$base;
return 301 https://$base$request_uri;
}
root $rootpath;
access_log "/var/log/nginx/${host}.access.log";
error_log "/var/log/nginx/error.log" debug;
index index.php index.html index.htm index.nginx-debian.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
Это сначала устанавливает базовый путь равным /var/www
, а затем пытается упорядочить каталоги в этом базовом пути. Если каталог с доменом, из которого осуществляется доступ к проекту, существует и обслуживает их оттуда, если внутри находится общая папка, этот вариант предпочтителен. Если оба недоступны, он перенаправляет на другой определенный URL.
Более того, для каждого хоста генерируется отдельный access.log
. К сожалению, для error.log
это не работает, поэтому все ошибки собираются в общий error.log
.
для конкретных файлов, которые можно затем отфильтровать по расширениям и т. Д., Чтобы указать как онив приведенном выше примере PHP
-файлы подаются с использованием php7.2-fpm
.