Настройка nginx, rewrite и fastcgi

Настройка nginx, rewrite и fastcgi

Эта проблема сводит меня с ума последние пару дней... Работая над приложением, которому нужна аутентификация и которое состоит из разных частей (CMS, API, frontend), мы столкнулись с некоторыми проблемами с общим доступом к сессиям/cookie/запросами кросс-источника. В конце концов я подумал, что проще всего будет просто реализовать все в одном домене;

  • схема://app/ для фронтенда
  • схема://app/api для API
  • схема://app/cms для CMS

это вызвало некоторые проблемы для сборки API в php. API ожидает request_uri вроде /users /images вместо /api/users и /api/users. Мы думали, что простое переписывание будет решением, но почему-то request_uri не переписывается.

Вот настройка сервера:

server {
    listen 9090;
    server_name coda.dev;

    access_log      /usr/local/var/log/nginx/coda.access.log;
    error_log       /usr/local/var/log/nginx/coda.debug.log notice;
    charset         utf-8;

    rewrite ^/(.*)/$ /$1 permanent;

    location / {
        proxy_pass       http://localhost:9000;
    }

    location /api {
        root /Volumes/HDD/Sites/opdrachten/CODAapi/laravel/public;
        try_files $uri /index.php;
    }

    location ~/cms {
        proxy_pass       http://localhost:9000;
    }

    location ~ \.php {            
        fastcgi_pass  127.0.0.1:9091;
        fastcgi_index index.php;
        include       /usr/local/etc/nginx/fastcgi.conf;
        fastcgi_param DOCUMENT_ROOT /Volumes/HDD/Sites/opdrachten/CODAapi/laravel/public;
        fastcgi_param SCRIPT_FILENAME /Volumes/HDD/Sites/opdrachten/CODAapi/laravel/public/index.php;
        break;
    }
}

Я также попробовал добавить это, чтобы перезаписать request_uri:

fastcgi_param REQUEST_URI $uri?$args;

Но это привело к тому, что каждый запрос получал request_uri index.php

Так как же мне отправить все запросы, начинающиеся с /api, в каталог моего API и переписать request_uri, чтобы удалить /api из URI?

Связанный контент