Я хочу обслуживать каталоги из домашнего каталога каждого пользователя; например example.com/~user
который будет обслуживаться из /home/user/www
. Там есть несколько примеров (например, https://unix.stackexchange.com/questions/126745/set-up-nginx-to-serve-files-from-subdirectories); что частично работает для меня.
Моя проблема: если бы я мог включить пользовательские каталоги, рут (examle.com/) выдает 404 не найденных. Как корневой каталог, так и пользовательские каталоги не могут быть включены одновременно.
Вероятно, я испортил конфигурацию. Вот мой /etc/nginx/sites-enabled/default
. Я попытался поместить блок "user dir" выше и ниже местоположения "root"; но результат тот же.
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#[trimmed]...
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
server {
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#[trimmed]...
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name example.com; # managed by Certbot
#root
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
#user dir
location ~ ^/(.+?)(/.*)?$ {
alias /home/$1/www$2;
index index.html index.htm;
autoindex on;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
#[trimmed]...
}
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name example.com;
return 404; # managed by Certbot
}
Может ли кто-нибудь помочь мне одновременно обслуживать корневой веб-каталог и пользовательские каталоги?