Sebab
Saya sudah lama tidak menggunakan apache, dan secara beransur-ansur saya rasa tidak biasa dengan apache, kerana seorang rakan mempunyai rangka kerja zendframework yang telah dipindahkan dari apache ke nginx dan memerlukan sokongan mod pathinfo.
Cari dalam talian di Shanghai
Jadi saya mula mencari artikel yang berkaitan dengan nginx+pathinfo, saya rasa mudah untuk mengkonfigurasinya pada mulanya. Selepas mencari, saya mendapati bahawa terdapat banyak artikel yang memperkenalkan nginx untuk membolehkan mod pathinfo, dan nampaknya ia tidak sukar. Tetapi selepas beberapa jam, ia masih tidak dikonfigurasikan dengan betul. Dan kandungan sejumlah besar artikel adalah sangat serupa, dan ia pada dasarnya dicetak semula.
Saya mula cemas sedikit! Kerana satu hari telah berlalu dan persiapan belum selesai.
Teruskan mencari
Tiada pilihan, teruskan mencari. Untuk kemudahan pengesahan, saya menggunakan a.com untuk memuat turun rangka kerja thinkphp dan menyediakan persekitaran. Dan menambah kelas pengawal useraction.class.php, menambah kaedah aplikasi dalam kelas dan mengeluarkan baris teks.
Jadi, saya mula menulis semula fail nginx.conf secara berterusan, mulakan semula nginx dan sentiasa memuat semula alamat a.com/index.php/user/app. Hasilnya ialah sama ada gesaan rasuah alamat, 502, atau akses defind
Sehari lagi berlalu, dan saya mula berasa sedikit teragak-agak.
Akhirnya berterusan
Secara logiknya, saya rasa perlu ada duluan untuk nginx+thinkphp, tetapi saya tidak mencari jawapannya. Tiba-tiba saya berasa sangat keliru di Internet, dan saya tidak dapat mencari jawapan kepada soalan kecil. Malam ini, saya cuba menggunakan carian kata kunci nginx thinkphp lagi Selepas saya mengklik lebih daripada sepuluh halaman, saya menjumpai kod
Kod tersebut adalah seperti berikut:
lokasi / {
jika (!-e $request_filename) {
tulis semula ^/(.*)$ /index.php/$1 last;
break;
}
}
lokasi ~ .php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
sertakan fcgi.conf;
set $real_script_name $fastcgi_script_name>; 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;
}
Simpan perubahan, mulakan semula nginx, muat semula penyemak imbas
Saya akhirnya lega kerana saya boleh mengaksesnya. Ia benar-benar tidak mudah.
Siarkan kod nginx.conf:
Salin kod Kod adalah seperti berikut:
pengguna www;
worker_processes 2;
worker_cpu_affinity 01 10;
us_log /data1/logs/nginx_error.log crit;
crit /nginx/nginx.pid;
worker_rlimit_nofile 65535;
acara
{
gunakan epoll;
worker_connections 65535;
{
sertakan mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size ; header_buffer_size 3 k;
klien_maks_badan_saiz 8m;
hantar fail dihidupkan;
tcp_nopush dihidupkan;
keepalive_timeout 60;
tcp_nodelay on;
cepat tamat_cgi_0>; masa tamat_cgi_0 00;
fastcgi_read_timeout 300 ;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size> dengar 80;
nama_server a.com ;
index index.php;
root /data0/htdocs/a.com/www;
lokasi/{
if (! -E $ request_filename) {
rehat;
}
}
lokasi ~ . fastcgi_index index.php;
sertakan fcgi.conf;
set $real_script_name $fastcgi_script_name;
jika ($.(fastcgi_script_name) ~ ".($.^) script_name ~" > tetapkan $real_script_name $1;
tetapkan $path_info $2;
}
fastcgi_param script_name param nama_fail_cgi_param $
fastcgi_param path_info $path_info;
}
}
}
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi mod pathinfo dalam nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!