Heim  >  Artikel  >  PHP-Framework  >  Die Fallstricke der Nginx-Konfiguration von ThinkPHP

Die Fallstricke der Nginx-Konfiguration von ThinkPHP

藏色散人
藏色散人nach vorne
2019-11-13 14:03:343644Durchsuche

Die NGINX-Konfiguration von THINKPHP ist eine Falle

Heute bin ich auf einige Probleme bei der Verwendung eines tp-basierten Rapid-Development-Frameworks gestoßen:

Nginx-Fehler-Screenshot

Die Fallstricke der Nginx-Konfiguration von ThinkPHP

Manueller Zeilenumbruch zur Vereinfachung der Erklärung

// 处理时重写或内部重定向循环
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"

Falsche Konfiguration

Siehe Larvenkonfiguration

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;
    }
    .
    .
    .
}

hat festgestellt, dass alle Pfade gleich sind, alle mit dem Homepage-Effekt

Zunächst festgestellt, dass es ein Problem mit den Nginx-Umschreiberegeln gibt

# 路径 / 开头之后都走这个匹配
# 如 /index /index/user 
location / {
    # $uri 本地有就返回,或者$uri/ 本地有目录就返回,或者走后面的重写
    # 本地是指在网站根目录下,如 当 $uri=index 就是看根目录下面有 index 文件或者 index/ 目录
    try_files $uri $uri/ /index.php?$query_string;
}

begann, einen Fehler zu melden


Lösung des Problems

Nach der Online-Überprüfung sollte die Konfiguration von tp5

    location / {
        try_files $uri $uri/ /index.php$uri;
    }

sein. Nach der Änderung wurde sie gefunden dass das Problem nicht gelöst wurde; beim Vergleich der Konfiguration wurde festgestellt, dass

  # 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;
    }

die vollständige Konfiguration

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;
    }
}

wurde. Empfohlenes Lernen: thinkphp-Tutorial

Das obige ist der detaillierte Inhalt vonDie Fallstricke der Nginx-Konfiguration von ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:So verwenden Sie thinkphpNächster Artikel:So verwenden Sie thinkphp