Nginx 에서 ThinkpHP 를 지원 하 는 Pathinfo 와 URL Rewrite 모드
3570 단어 mongodb
시스템: Ubuntu12.04 x86_64
환경: Nginx1.1.19+PHP5.3.10+Mongo2.6.3
회사 에서 Nginx + Mongo + PHP 를 사용 해 야 하기 때문에 방금 설 치 된 LAMP 를 뒤 집 고 LNMP 를 다시 설치 하 겠 습 니 다.소프트웨어 설 치 는 여기 서 소개 하지 않 습 니 다. 필요 하 시 면 여 기 를 보 세 요.
Nginx 설치 방법 。
Nginx 가 ThinkpHP 의 Pathinfo 와 URL Rewrite 모드 를 지원 하 는 방법 을 소개 한다.
1. ThinkpHP 는 ThinkpHP 의 공식 해결 방안 을 제 시 했 는데 다음 과 같다.
Nginx 프로필 을 엽 니 다. / etc / nginx / nginx. cof 는 보통 이 경로 에 있 습 니 다. 설치 경로 에 따라 달라 질 수 있 습 니 다.vhost 를 설정 하고 이 vhost 가 pathinfo 를 지원 하기 만 하면 vhost 설정 파일 을 직접 열 수 있 습 니 다.다음 과 같은 코드 를 찾 습 니 다 (버 전의 nginx 는 조금 다 를 수 있 지만 차이 가 크 지 않 습 니 다).
location ~ .php
{
#
# $path_info , pathinfo
set $path_info "";
# $real_script_name,
set $real_script_name $fastcgi_script_name;
#
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
# $real_script_name
set $real_script_name $1;
# $path_info
set $path_info $2;
}
# fastcgi
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
이렇게 하면 nginx 서버 는 pathinfo 를 지원 할 수 있 습 니 다.하지만 ThinkpHP 의 URL 을 지원 하려 면MODE 가 2 로 설 정 된 모드 는 rewrite 규칙 도 설정 해 야 합 니 다.access 찾기log 문 구 는 그 위 에 다음 과 같은 문 구 를 추가 합 니 다.
# , ,
if (!-e $request_filename)
{
# rewrite index.php 。
rewrite ^/(.*)$ /index.php/$1;
# , subdir 。
#rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
}
이상 의 방법 은 ThinkpHP 가 공식 적 으로 제시 한 것 이지 만 틀림없이 검 증 된 것 일 것 이다. 그러나 슬 픈 것 은 나 에 게 효과 가 없다 는 것 이다.
2. 나의 해결 방안
저 는 sites (vhost) 에서 설정 한 것 입 니 다. / etc / nginx / sites - available / 디 렉 터 리 에 있 습 니 다.물론 당신 도 직접 / etc / nginx / nginx. conf 에서 설정 할 수 있 습 니 다.그리고 php 설정 항목 에 다음 두 줄 을 추가 합 니 다.
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
전체 설정 은 다음 과 같 습 니 다.
location ~ \.php$ {
root /var/www;
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
대 보 일기 판권 소유, 전재 출처 밝 혀 주세요.주소
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.