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/;
    }
}

相關內容