NGINX:将多个位置配置到不同的目录

NGINX:将多个位置配置到不同的目录

我想在我的 NGINX 服务器上为网站的每个部分定义一个单独的目录。

domain.com/                     -->     /var/www/html/domain.com/website
domain.com/blog/                -->     /var/www/html/domain.com/blog
domain.com/checkout/            -->     /var/www/html/domain.com/checkout
domain.com/download/            -->     /var/www/html/domain.com/download
domain.com/forum/               -->     /var/www/html/domain.com/forum

我尝试过的不同配置不起作用,出现 404 错误。

server {
    location /  {
        root /var/www/html/domain.com/website;
    }
    
    location /blog  {
        root /var/www/html/domain.com/blog;
    }
}

或者

server {
    root /var/www/html/domain.com/website;
    
    location /blog  {
        root /var/www/html/domain.com/blog;
    }
}

或者

server {
    root /var/www/html/domain.com/website;
    
    location /blog/  {
        alias /var/www/html/domain.com/blog;
    }
}

或者

server {
    root /var/www/html/domain.com/website;
    
    location /blog/  {
        alias /var/www/html/domain.com/blog/;
    }
}

或者

server {
    root /var/www/html/domain.com;
    
    location /  {
        alias /var/www/html/domain.com/website/;
    }
    
    location /blog/  {
        alias /var/www/html/domain.com/blog/;
    }
}

或者

server {
    location ~ ^/(?!(blog|checkout|download|forum))/ { 
        root /var/www/html/domain.com/website;
    } 
    
    location /blog/  {
        root /var/www/html/domain.com/blog;
    }
}

答案1

这个配置解决了我的问题

server {
    location / { 
        root /var/www/html/domain.com/website;
    } 
    
    location ~ ^/(?!(blog|checkout|download|forum))/ { 
        root /var/www/html/domain.com/website;
    } 
    
    location /blog/  {
        alias /var/www/html/domain.com/blog/;
    }
}

相关内容