Raison
Je n'ai pas utilisé Apache depuis longtemps et je me sens progressivement peu familier avec Apache, car un ami a un framework zendframework qui a été déplacé d'Apache vers nginx et nécessite la prise en charge du mode pathinfo.
Recherche en ligne à Shanghai
J'ai donc commencé à chercher des articles liés à nginx+pathinfo. Je pensais qu'il serait facile de le configurer au début. Après recherche, j'ai découvert qu'il existe de nombreux articles présentant nginx pour activer le mode pathinfo, et il semble que ce ne soit pas difficile. Mais après plusieurs heures, il n’est toujours pas configuré correctement. Et le contenu d'un grand nombre d'articles est très similaire, et ils sont essentiellement réimprimés.
Je commence à être un peu anxieux ! Car un jour s’est écoulé et la préparation n’est pas terminée.
Continuer la recherche
Pas le choix, continuer la recherche. Pour faciliter la vérification, j'ai utilisé a.com pour télécharger le framework thinkphp et configurer un environnement. Et ajouté la classe de contrôleur useraction.class.php, ajouté une méthode d'application dans la classe et généré une ligne de texte.
J'ai donc commencé à réécrire constamment le fichier nginx.conf, à redémarrer nginx et à actualiser constamment l'adresse a.com/index.php/user/app. Le résultat est soit une invite de corruption d'adresse, 502, soit une définition d'accès.
Un autre jour s'est écoulé et j'ai commencé à me sentir un peu hésitant.
Enfin persisté
Logiquement parlant, je pense qu'il devrait y avoir un précédent pour nginx+thinkphp, mais je n'ai pas cherché la réponse. Soudain, je me sens tellement confus sur Internet et je ne trouve pas de réponse à une petite question. Ce soir, j'ai essayé d'utiliser à nouveau la recherche par mot-clé nginx thinkphp. Après avoir cliqué sur plus de dix pages, j'ai trouvé un code
Copiez le code comme suit :
emplacement / { réécrire ^/(.*) $ /index.php/$1 last;
include fcgi.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $ real_script_name $1;
set $path_info $2;
}
fastcgi_param script _filename $document_root $ Real_script_name;
Fastcgi_param Script_name $ Real_Script_name est apparue et j'ai pu y accéder, et finalement desserrée Ce n'est vraiment pas le cas. facile de prendre une respiration.
Publiez le code nginx.conf :
Copiez le code Le code est le suivant :
user www www;
worker_processes 2;
worker_cpu_affinity 01 10;
error_log /data1/logs/nginx_error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;
worker _rlimit_nofile 65535;
événements
{
utiliser epoll ;
worker_connections 65535 ;
}
http
{
include mime.types;
default_type application/octet-stream ;
server_names_hash_bucket_size 128;
client_header_ buffer_size 32 ko ;
large_client_header_buffers 4 32 ko ;
client_max_body_size 8 m ;
sendfile activé;
tcp_nopush activé;
keepalive_timeout 60;
tcp_nodelay activé;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64 ko;
fastcgi_buffers 4 64 ko;
fastcgi_busy_buffers_size 128 ko;
fastcgi_temp_file_write_size 128 ko ;
serveur
{
écouter 80;
nom_serveur a.com;
index index.php;
root /data0/htdocs/a.com/www;
emplacement / {
if (!-e $request_filename) réécrire ^ /(.*)$ /index.php/$1 last;
pause ;
}
}
emplacement ~ .php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
inclure fcgi.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param script_filename $document_root$real_script_name ;
fastcgi_param script_name $real_script_name;
fastcgi_param path_info $path_info;
}
}
}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!