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