우선, 비슷한 질문을 찾으려고했지만 그 질문에 대한 해결책은 필자의 필요에 맞게 사용자 정의 할 수없는 특정 코드 라인이었습니다.nginx는 화이트리스트를 제외하고 모두 index.php를 다시 작성합니다
Codeigniter 설치가 있고 Apache에서 nginx로 마이그레이션하려고합니다. 그러나 Apache에서 .htaccess는 매우 간단합니다. 허용 된 사이트 목록을 사용하고 나머지는 모두 index.php
으로 다시 작성합니다.
RewriteEngine on
RewriteCond $1 !^(index\.php|css|images|core|uploads|js|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
그러나의 nginx에, 나뿐만 아니라 아무 소용이, 위치와 장난 같이 경우와 try_files 지침을 시도했습니다. 나는 아직도 nginx가 서버 설정을 읽는 방법에 익숙하지 않고, 온라인 튜토리얼은 다소 혼란 스럽다.
는 또한의 index.php를 웹 루트에 수 있지만 하위 디렉토리 server
에서하지 않습니다. 이 때문에
, 나는 또한 디렉토리로 이동하지 않습니다/서버로 시작해야합니다 심지어 URI 요청을해야하지만 index.php
이 지금까지 내 nginx를 가상 호스트 구성입니다 :
server {
listen 80;
server_name example.com;
root /home/example/public_html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location/{
index index.htm index.html index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/example.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* ^.*(/|\..*) {
try_files $uri $uri/ /server/index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
요청을 index.php
으로 리디렉션하는 데 도움이되지만 허용 목록은 없습니다. 누구나 각 부분이하는 일에 대한 간략한 설명이있는 실습 예제를 생성 할 수 있다면 고맙겠습니다.
고마워요, 그 속임수를했습니다! 나는 pathinfo 일을 들여다 보아도 재미있을 것 같다. – xiankai
http://wiki.nginx.org/IfIsEvil http://wiki.nginx.org/Pitfalls – VBart
IfIsEvild 문서에 따르면, 다시 작성 ... 마지막으로; 안전하지만 제안은 (물론, 이것은 일종의 wiki입니다) 환영합니다. – complex857