首页 > 解决方案 > 某些地址的 nginx 自定义根

问题描述

我已将 nginx 安装到我的 VPN 中。我是一个非常初学者,所以这可能是一个愚蠢的错误,但我无法弄清楚我们的或谷歌它。

我正在尝试做并且一直失败的是为某些地址设置根文件夹。例如:mydomain.com/websiteone/ 将在 /var/www/websiteone/public/ 中有根文件夹,在 /var/www/websitetwo/public/ 中有 mydomain.com/websitetwo/

我使用 Laravel,这就是我需要这样做的原因。

这是confing以及我在不同变体中尝试的内容。

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www;

    index index.html index.php index.htm;

    location /websiteone/ {
        root /var/www/websiteone/public/;
        try_files $uri $uri/ 404;
    }

    location /websitetwo/ {
        root /var/www/websitetwo/public/;
        try_files $uri $uri/ 404;
    }
}


标签: laravelnginx

解决方案


只要URL dir 路径与两个 Laravel 实例的实际目录名称匹配,就不需要alias或任何花哨的东西(见下文)。

此外,Laravel 有一个典型的“前端控制器”URL 模式,这意味着不存在的 URL 应该通过它的index.php. 所以:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www;

    index index.html index.php index.htm;

    location /websiteone/ {
        root /var/www/websiteone/;
        try_files /public$uri /public$uri/ /public/index.php$is_args$args;
    }

    location /websitetwo/ {
        root /var/www/websitetwo/;
        try_files /public$uri /public$uri/ /public/index.php$is_args$args;
    }
}

推荐阅读