NGINX, Yii 설정 rest 경로 스타일 설정

1945 단어 nginxRESTyii경로
이것 은 번 거 로 운 일이 아 닙 니 다. Yii 는 이미 모든 경로 와 관련 된 일 을 했 기 때문에 우 리 는 경로 규칙 과 nginx 만 설정 하면 됩 니 다. 여기 서 세 가지 nginx 설정 방안 을 소개 합 니 다. 사실은 Yii 뿐만 아니 라 대부분의 phop 프레임 워 크 는 이렇게 설정 할 수 있 습 니 다.
방안 1
(이것 은 인터넷 에서 가장 많은 해결 방안 입 니 다.
if (!-e $request_filename) {
    rewrite ^/path/(.*)  /path/index.php/$1 last;
}

요청 한 파일 이 존재 하 는 지 판단 한 다음 에 rewrite 를 index. php 에 nginx 의 pathinfo 지원 을 설정 해 야 합 니 다. 그러면 약간의 효율 적 인 문제 와 안전 문 제 를 가 져 올 수 있 습 니 다 (http://www.laruence.com/2010/05/20/1495.html)
방안 2
rewrite 매개 변수 전달 경로
location /sampleapp {
      rewrite ^/sampleapp/(.*)$ /sampleapp/index.php?r=$1;
 }

nginx 가 추천 하 는 yii 설정 입 니 다. 이동 하 셔 도 됩 니 다. http://wiki.nginx.org/Yii
이것 도 내 가 처음에 가장 좋아 했 던 설정 방식 이지 만 문제 가 하나 있다. 
yii rule array 를 설정 하면 ('login' = > 'account / login')
그리고 방문http://host/sampleapp/login 그런데 놀 라 운 발견 은 404 입 니 다. 이 문제 에 대해 저 는 yii 코드 를 본 후에 pull request 를 제출 했 습 니 다. https://github.com/yiisoft/yii/pull/3423 이 문 제 를 수정 하기 위해 서 는 채택 되 지 않 았 다.
그래서 다음 에 저 는 방안 세 가 지 를 성대하게 내 놓 겠 습 니 다. 이 방법 은 한계 가 있 을 수 있 지만 안전 하 다 고 생각 합 니 다.
방안 3
location ~ \.php$ {
     deny all;
}

location ^~ /apppath {
     fastcgi_pass unix:/var/run/php5-fpm.sock;     
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME $document_root/apppath/index.php;  }

location ~ ^/apppath/(protected|framework|nbproject){
     deny all;
}

location ^~ /apppath/assets/ {
     access_log off;
     expires 24h;
} 

여기 서 주의해 야 할 것 은 설정 하면 안 된다 는 것 입 니 다.
fastcgi_index index.php;

이 이 가 경 로 를 오해 하 게 만 들 거 예요.
프로젝트 3. 여 기 는 완전한 버 전 입 니 다. 경로 아래 의 모든 요청 을 index. php 에 전달 한 다음. php 접미사 접근 을 금지 합 니 다 (웹 셸 을 효과적으로 방지 할 수 있 습 니 다) 
세 번 째 구성 방안 은 아직 아무런 문제 가 발견 되 지 않 았 습 니 다. 저도 생산 환경 에서 사용 하 는 것 을 추천 합 니 다. 여러분 이 만약 에 무슨 문제 가 있 는 지 발견 할 수 있다 면 @ 저 는 복원 할 수 있 습 니 다. 감사합니다.

좋은 웹페이지 즐겨찾기