2014-01-27 2 views
0

아파치에서 Nginx로 이동 중입니다. 아파치 다시 쓰기 규칙을 nginx 규칙으로 변환하는 데 문제가 있습니다. 나는 그것의 추측 -Nginx + rewrite + php-fpm = confusion

rewrite ^/$ /www/controller.php?_url_=index break; 
rewrite ^/+$ /www/controller.php?_url_=index break; 
rewrite ^/([a-zA-Z0-9_]+)(/([a-zA-Z0-9_]*))?$ /www/controller.php?_url_=$1&_req_=$2 break; 
rewrite ^/([a-zA-Z0-9/]+)controller.php?(.*)$ /www/controller.php?$2 break; 

를 내 브라우저 (서버를 실행하지 않음) PHP 파일을 다운로드하는 규칙 이상 사용하는 경우 : 내가 사용하려고 무엇

RewriteRule ^$ www/controller.php?_url_=index [QSA,L] 
RewriteRule ^/+$ www/controller.php?_url_=index [QSA,L] 
RewriteRule ^([a-zA-Z0-9_]+)(/([a-zA-Z0-9_/]*))?$ www/controller.php?_url_=$1&_req_=$2 [QSA,L] 
RewriteRule ^([a-zA-Z0-9/]+)controller.php?(.*)$ www/controller.php?$2 [QSA,L] 

이 : 나는 변환 할 노력하고있어 PHP-FPM에 전달되지 않습니다. 어딘가에 내가 "휴식"을 대체해야한다는 것을 알았습니다. "마지막;" 같은 : 나는 http://example.org/login를 방문 할 때

http://example.org에서이 아직도 내가 다운로드있어 PHP 파일을 교체 한 후
rewrite ^/$ /www/controller.php?_url_=index last; 

하지만 나는 무한 루프에 들어갈. 내가 nginx 설명서 및 다른 예제 (또한 여기에 StackOverflow)하지만 올바른 설정을 찾을 수없는 창문을 읽어보십시오. 누군가 올바른 방향으로 나를 가리킬 수 있을까요?

server { 
listen  80; 
server_name 10.10.100.172; 
error_log /var/log/nginx/example.com.error.log debug; 
rewrite_log on; 


location/{ 
root /var/www/webs; 
    index index.php index.html index.htm; 
rewrite ^/$ /www/controller.php?_url_=index last; 
    rewrite ^/+$ /www/controller.php?_url_=index last; 
    rewrite ^/([a-zA-Z0-9_]+)(/([a-zA-Z0-9_]*))?$ /www/controller.php?_url_=$1&_req_=$2 last; 
    rewrite ^/([a-zA-Z0-9/]+)controller.php?(.*)$ /www/controller.php?$2 last; 
} 


error_page 500 502 503 504 /50x.html; 
location = /50x.html { 
    root /usr/share/nginx/html; 
} 

location ~ \.php$ { 
    root   /var/www/webs; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include  fastcgi_params; 
} 

}

편집 : 여기

내 전체 설정 파일입니다 I 위치 세그먼트 외부 규칙을 이동 및 사용

"휴식;" 각 규칙의 끝에서 /www/controller.php에 접속할 수 있습니까? url = 로그인 & req =/example.org/login/에 갈 때 - controller.php가 무한 루프를 담당했습니다. example.org 또는 example.org/에 접속하려고 시도 할 때 controller.php 파일을 다운로드하고 있습니다. PHP-FPM에 전달되지 않은 것과 같습니다. 어떤 추측이라도?

답변

2

위치 세그먼트 밖에서 위의 규칙을 사용했는데 작동합니다! 나는 다른 브라우저에서 내 페이지를 보았고 ecerything은 괜찮습니다. 난 항상 캐시를 제거하는 것을 잊지. 대답에 대한

+0

최대 :) –