nginx 설정, 재작성 및 fastcgi

nginx 설정, 재작성 및 fastcgi

이 문제는 지난 며칠 동안 나를 미치게 만들었습니다... 인증이 필요하고 다양한 부분(CMS, API, 프론트 엔드)으로 존재하는 애플리케이션을 작업하면서 세션/쿠키/교차 원본 공유와 관련된 몇 가지 문제에 직면했습니다. 요청. 결국 나는 모든 것을 하나의 도메인 아래에 구현하는 것이 가장 쉽다고 생각했습니다.

  • 프런트엔드의 경우 plan://app/
  • API의 경우chem://app/api
  • CMS의 경우 Scheme://app/cms

이로 인해 PHP의 API 빌드에 몇 가지 문제가 발생했습니다. API는 /api/users 및 /api/users 대신 /users /images와 같은 request_uri를 기대합니다. 우리는 간단한 재작성이 해결책이 될 것이라고 생각했지만 어떻게든 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를 다시 작성하여 uri에서 /api를 제거하려면 어떻게 해야 할까요?

관련 정보