Nginx 配置

Nginx 配置

我正在尝试为我的 Web 应用程序设置 nginx Web 服务器。
以下是我想要的 URL

www.example.com           -----> /var/www/html
www.example.com/backend/  -----> /var/www/app/backend/www
www.example.com/frontend/ -----> /var/www/app/frontend/www

我能够让 /var/www/html 为我提供例如 example.com 的正确的 php 文件,但是我无法让另外两个文件工作。

我的应用程序是基于 yii 构建的,我使用它作为我的基础https://github.com/clevertech/YiiBackboneBoilerplate

有一个重写功能可以从 URL 中删除 index.php

当我访问 www.example.com/backend 时,它会带我到 index.php,但我对 url 进行了重写,使链接变成 www.example.com/backend/site/login

错误日志中显示如下内容

"/var/www/app/backend/www/site/login/index.php" is not found (2: No such file or directory), client: 114.143.183.171, server: example.com, request: "GET /backend/site/login/ HTTP/1.1", host: "example.com"

以下是我的会议摘要

set $yii_bootstrap "index.php";
location / {
           root /var/www/html/;
           index $yii_bootstrap;
}
location /backend {
         alias /var/www/app/backend/www;
         index $yii_bootstrap;
}
location ~ \.php {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;
        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
                set $fsn $fastcgi_script_name;
        }
        # connect to a unix domain-socket:
        fastcgi_pass   unix:/var/run/php-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        # This file is present on Debian systems..
       include fastcgi_params;
    }

请帮我解决这个问题?我试图理解,但找不到错在哪里。

答案1

1 个请求 = 1 个位置

您需要复制正则表达式位置,以便每个前缀位置都能找到一个。这是最有效的方法。

不要害怕复制粘贴!配置中的几个额外字节将使 nginx 配置更具可读性、可扩展性和运行效率更高。

location / {
    root /var/www/html;
    location ~* \.php$ {
        [...]
    }
}

location /backend/ {
    alias /var/www/html/backend/www/;
    location ~* \.php$ {
        [...]
    }
}

location /frontend/ {
    alias /var/www/html/frontend/www/;
    location ~* \.php$ {
        [...]
    }
}

相关内容