nginx: 리디렉션 없이 하위 도메인을 하위 디렉터리에 다시 작성

nginx: 리디렉션 없이 하위 도메인을 하위 디렉터리에 다시 작성

nginx가 실제로 뒤에서 http://api.example.org/xyz호출하는 요청 을 다시 작성하고 싶습니다 . example.org/api/xyz까다로운 부분은 CodeIgniter를 사용하고 있으므로 /xyz/index.php에서 PHP 스크립트를 로드하는 대신 XYZ 컨트롤러로 CodeIgniter의 /index.php를 참조하는 데 필요하다는 것입니다. 지금은 다음과 같이 설정했습니다.

if ($host = "api.example.org") {
    rewrite ^(.*)$ http://example.org/api$1 permanent;
}

...하지만 이로 인해 브라우저에서 눈에 띄는 리디렉션이 발생합니다. 재작성이 원활하게 이루어지고 뒤에서 발생하기를 원합니다. 그래서 나는 다음을 시도했습니다.

if ($host = "api.example.org") {
    rewrite ^(.*)$ /api$1 last;
}

하지만 그러면 "지정된 입력 파일이 없습니다." 오류가 발생합니다. :( 이전에 nginx의 codeigniter 컨트롤러에 하위 도메인을 다시 작성해 본 사람이 있나요?

감사해요!

답변1

이걸 알아내려고 하루 종일 노력했는데 결과적으로는 정말 간단했어요. 내가 한 일은 다음과 같습니다.

location ~* \.php$ {
    ...
    if ($host ~ ^api\.) {
        set $api "/api";
    }
    fastcgi_param REQUEST_URI $api$request_uri;
    ...
}

우! 누군가 이것에 대해 잠재적으로 잘못된 점을 발견하면 알려주십시오! 그래도 작동하는 것 같습니다.

관련 정보