Я хочу обслуживать каталоги из домашнего каталога каждого пользователя; например 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
}

Может ли кто-нибудь помочь мне одновременно обслуживать корневой веб-каталог и пользовательские каталоги?

0