2012-06-21 3 views
2

내 nginx 서버에서 하위 디렉토리를 사용하는 데 문제가 있습니다.루트에서 WordPress의 nginx php와 서브 디렉토리의 다른 앱

나는 웹 루트로 WordPress 설치를 제공하고 서브 디렉토리에서 추가 PHP 응용 프로그램을 실행하려고 nginx를 사용하고 있습니다. Wordpress 잘 실행되지만 404, 403, 또는 "지정된 입력 파일 없음."않고 하위 디렉터리에서 실행되도록 응용 프로그램을 얻을 수 없습니다. 다양한 구성의 오류. 확실한 것이 있지만, 알아낼 수는 없습니다! 어떤 도움을 크게 감상 할 수

:

여기에 관련 설정입니다!

server { 
listen  myserver.edu:8081;     
server_name myserver.edu:8081;   

try_files $uri $uri/ /index.php; 


location/{ 
    root /path/to/nginx/html/wordpress; 
    index index.php; 
} 

location /stacks { 
    alias /another/path/to/usr/local/share/stacks/php; 
    index index.php; 
} 

location ~ \.php$ { 
    set $php_root /path/to/nginx/html/wordpress; 
    include  fastcgi_params; 
    fastcgi_pass localhost:8082; 
    fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 
    } 

location ~ \stacks.php$ { 
    set $php_root /another/path/to/usr/local/share/stacks/php; 
    include  fastcgi_params; 
    fastcgi_pass localhost:8082; 
    fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 
    } 

답변

5

별칭을 사용하고 $ php_root를 설정하는 방법을 모르겠습니다. 나는 당신이 외부 폴더에서 당신의 wordpress-root 디렉토리로 심볼릭 링크를 만드는 경우 그것을 고치는 방법을 안다.

그래서 스택 하위 디렉토리는 실제 하위 디렉토리 있도록 심볼릭 링크를 만들 터미널을 사용하여 :

ln -s /another/path/to/usr/local/share/stacks/php /path/to/nginx/html/wordpress/stacks 

의 nginx-설정으로 나는

server { 
    listen  myserver.edu:8081;     
    server_name myserver.edu:8081; 

    root /path/to/nginx/html/wordpress; 
    index index.php;  

    location/{  
     try_files $uri $uri/ /index.php; 
    } 

    location /stacks { 
     try_files $uri $uri/ /stacks/index.php; 
    } 

    location ~ \.php$ { 
     fastcgi_pass localhost:8082; 
     include  fastcgi_params; 
    } 
} 
+1

굉장! 그게 전부! 훨씬 더 간단합니다. 이 방법으로 보안 문제가 있습니까? – jasongallant

+0

Wordpress 설치가 해킹 당하면 다른 웹 사이트에도 액세스 할 수 있으며 반대의 경우도 마찬가지입니다. 그러나 해킹 당하면 어쨌든 망해진다. 왜 이것이 이것이 이전의 시도보다 더 안전하지 않은지 나는 알지 못할 것입니다. – Zombaya

+0

멋진데, 고마워. 나는 이전이 특히 안전하다고 생각하지는 않았지만 나는 이것에 대해 처음이야. 그래서 나는 물을 것이라고 생각했다. – jasongallant

1

'try_files'를 주석으로 처리하십시오. 하위 디렉토리가 작동하기 시작합니까? 아마도 '위치'지시문을 고려하기 전에 처리됩니다. 그렇다면 'try_files'를 'location /'에 대한 블록으로 이동하십시오.

어쨌든 'try_files'를위한 더 좋은 장소라고 생각합니다. 현재 구성에서는 존재하지 않는 파일에 대한 요청이 모두 'stacks'디렉토리에 있더라도 Wordpress로 전송됩니다.

+0

이 시도 사용하지만 것 작동하지 않았다. 그래도 의견을 보내 주셔서 감사합니다. 나는 전에이 가능성을 보았습니다. – jasongallant

관련 문제