Nginx的。 Laravel。如何在子文件夹中设置多个端点

时间:2017-10-30 10:11:01

标签: php laravel nginx nginx-location

我有这样的项目结构

<root>/public/laravel_app/index.php — Laravel index file

<root>/public/index.php — CraftCMS index file

我想在

加载 CraftCMS 应用

https://<domain>

https://<domain>/laravel_app

Laravel 应用

这是我的vhost.conf

server {
    listen 443 ssl;

    index index.php index.html;

    root /var/www/public;

    ssl_certificate       /var/www/docker/certs/nginx.crt;
    ssl_certificate_key   /var/www/docker/certs/nginx.key;

    location / {
        try_files $uri /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

我查看了几乎所有相关的SO问题,并尝试了很多东西,所以,如果可能的话,请发送与我的配置相关的建议。

我不是系统管理员而且我是Apache用户(在没有任何调整的情况下以这种方式工作),所以我道歉,如果我错过了一些明显的东西。

2 个答案:

答案 0 :(得分:2)

我认为你应该重写2个url,因为laravel_app有自己的index.php进行重写。

server {
    ...

    root /var/www/public;

    ...

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location /laravel_app {
        try_files $uri $uri/ /laravel_app/index.php?$args;
    }

    ...
}

希望这有效

答案 1 :(得分:0)

变化

location / {
    try_files $uri /index.php?$args;
}

location / {
    try_files $uri $uri/ /index.php?$args;
}

添加$uri/告诉nginx查找具有uri名称的目录。