Maison  >  Article  >  Opération et maintenance  >  Comment configurer le mode pathinfo dans nginx

Comment configurer le mode pathinfo dans nginx

WBOY
WBOYavant
2023-05-12 19:52:041497parcourir

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer