2017-10-30 16 views
0

우리는 lighttpd에서 HTTP/2.0을 위해 lighttpd로 이동 중이며 lighttpd에서 너무 단순한 것을 구성하는 데 어려움을 겪고 있습니다.Nginx, location, alias and php

alias.url = ("/api" => "/web/myserver.com/develapi/") 

우리는 버전 제어 API로이를 수행하고 URL을 적절한 폴더로 지정합니다. 우리는 파일 링크도 사용하고 싶지 않습니다. 또한 lighttpd에서 한 줄 명령입니다.

다음은 NGINX에서 동일한 목표를 달성하는 방법입니다. 의 nginx는 $ fastcgi_script_name로 $의 DOCUMENT_ROOT와 /api/index.php로 /web/myserver.com/develapi 통과 따라서 SCRIPT_FILENAME을 결과하는 것은 잘못로

location /api { 
    alias /web/myserver.com/develapi; 
    location ~ \.php$ { 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
     fastcgi_pass 127.0.0.1:9000; 
    } 
    } 

그러나이 작동하지 않습니다.

우리는 다음 루트에게의 nginx에 $ DOCUMENT_ROOT와 /develapi/index.php의 $의 fastcgi_script_name로 /web/myserver.com을 전달하고 따라서 SCRIPT_FILENAME을 결과하는 것은 올바른으로이 작동

location /develapi { 
    root /web/myserver.com; 
    location ~ \.php$ { 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
     fastcgi_pass 127.0.0.1:9000; 
    } 
    } 

을 사용했습니다.

그러나 루트를 사용한다는 것은 기존 구조 또는 URL을 변경했음을 의미합니다. 이 상황에서 별칭을 사용하는 것이 올바른 해결책이지만이를 구현하는 nginx가 별칭을 사용하는 것은 까다로울 수 있습니다.

우리는 뭔가 사소한 것이 누락 될 수 있습니다, 어떤 포인터도 인정 될 것입니다.

답변

0

내가 문제 일반적으로 대답한다/문서화 방법은 많은 문서를 읽기

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

SCRIPT_FILENAME를 반환 할 생각은 $의 REQUEST_FILENAME가 갈 수있는 더 좋은 방법입니다 드러내고 루트 및 별칭 모두에서 작동

fastcgi_param SCRIPT_FILENAME $request_filename;