THINKPHP의 NGINX 구성은 함정입니다
오늘 tp 기반 신속한 개발 프레임워크를 사용할 때 몇 가지 문제에 직면했습니다:
nginx 오류 스크린샷
설명의 편의를 위해 수동으로 줄바꿈
// 处理时重写或内部重定向循环 2019/11/11 11:16:06 [error] 15164#15432: *1 rewrite or internal redirection cycle while processing "/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index/user/index.html", client: 127.0.0.1, server: xxxxx, request: "GET /index/user/index.html HTTP/1.1", host: "xxxxx", referrer: "xxxxx"
잘못된 구성
Larvael 구성 참조
server { . . . location / { try_files $uri $uri/ /index.php?$query_string; } . . . location ~ \.php$ { fastcgi_pass127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } . . . }
모든 경로가 동일하고 모두 홈페이지 효과인 것으로 확인됨
nginx 재작성 규칙에 문제가 있다는 예비 판단
# 路径 / 开头之后都走这个匹配 # 如 /index /index/user location / { # $uri 本地有就返回,或者$uri/ 本地有目录就返回,或者走后面的重写 # 本地是指在网站根目录下,如 当 $uri=index 就是看根目录下面有 index 文件或者 index/ 目录 try_files $uri $uri/ /index.php?$query_string; }
오류 보고 시작
해결됨 문제
온라인 문의 결과 tp5의 구성은
location / { try_files $uri $uri/ /index.php$uri; }
여야 합니다. 변경 후 구성을 비교한 결과 문제가 해결되지 않은 것으로 확인되었으며
# location ~ \.php$ 改成 location ~ \.php(.*)$ location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; }
가 해결되었으며 완료되었습니다. 구성
server { listen 80; server_name xxxxxxx ; root www; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; charset utf-8; index index.html index.htm index.php; location / { try_files $uri $uri/ /index.php$uri; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }
추천 학습: thinkphp 튜토리얼
위 내용은 ThinkPHP의 nginx 구성 함정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!