


Bagaimana untuk menyelesaikan sejumlah besar ralat http 400 dalam log akses nginx pelayan Linux
Rekod ralat dalam pelayan adalah serupa dengan ini:
124.65.133.242 – – [27/oct/2014:14:30:51 +0800] “ - ” 400 0 “-” “-”
124.65.133.242 – – [27/oct/2014:14:31:45 +0800] “-” 400 0 “-” “-”
124.65.133.242 – – [27/oct/2014:14:31:45 +0800] “-” 400 0 “-” “-”
124.65.133.242 – – [27/oct/2014:14:31:45 +0800 ] “-” 400 0 “-” “-”
Langkah keluar
Selepas menganalisis fail log nginx, didapati bahawa beberapa 400 dijana selepas normal akses. Ralat mungkin berlaku secara berterusan dari 1 hingga 6 setiap kali, dan tidak setiap lawatan pelanggan akan menghasilkan ralat 400.
Adalah perkara biasa untuk memerhatikan akses sebelumnya yang menghasilkan 400 kod status, fail biasa, sumber biasa, ejen pengguna biasa... semuanya harmoni, jadi mengapa 400 datang?
Melalui pemerhatian yang teliti, kami mendapati bahawa semua ejen pengguna lawatan sebelumnya yang menghasilkan 400 ralat ditinggalkan oleh penyemak imbas Google Chrome, yang bermaksud bahawa 400 ralat telah dihasilkan oleh penyemak imbas Chrome. Walau bagaimanapun, selepas tangkapan paket tempatan, didapati bahawa Chrome tidak menghantar permintaan atau paket data yang tidak normal kepada pelayan.
Dalam analisis tangkapan paket, didapati bahawa chrome memulakan lebih daripada satu sambungan apabila mengakses pelayan, biasanya antara 5 hingga 6. Jika sumber yang diminta tidak memerlukan begitu banyak sambungan, chrome akan menutupnya. Sambungan yang digunakan dipanggil pra-sambungan.
Biasanya apabila kita melawat tapak web, perkara pertama yang kita dapat ialah fail html utama, yang mengandungi pautan ke fail sumber media lain seperti css, js, gambar, dll yang diperlukan oleh halaman web fail sumber dan html utama Fail berada di bawah domain Pra-sambungan bermakna mewujudkan banyak sambungan tcp sebelum mendapatkan html, bukannya menunggu untuk mendapatkan fail html dan kemudian menyambung ke pelayan untuk mendapatkan fail lain pelayan mengambil sedikit masa, jadi Teknologi ini boleh mempercepatkan pemaparan halaman web pada tahap yang besar.
Jika sumber pautan HTML halaman web agak kecil, atau klien mempunyai cache dan tidak perlu menyambung untuk memuat turun, maka berkemungkinan hanya satu daripada 5-6 sambungan yang dikeluarkan oleh Penyemak imbas Chrome diperlukan, dan yang lain diperlukan Tutupnya, yang menimbulkan masalah: pelayan disambungkan tanpa menghantar sebarang permintaan. Dalam kes ini, nginx mengendalikannya sebagai ralat 400, tetapi kerana sambungan telah ditutup, mesej ralat tidak akan dihantar kepada klien Ini menyebabkan ralat direkodkan dalam fail log, tetapi tiada apa yang dapat dilihat dalam fenomena penangkapan paket.
Ujian
Untuk mengesahkan keputusan analisis di atas adalah sangat mudah, buka baris arahan cmd.exe, masukkan telnet serverip 80, tunggu sambungan berjaya, dan kemudian tutup cmd terus Periksa fail log nginx dan terdapat rekod ralat 400 tambahan.
Satu ulasan
Kelebihan prasambungan sudah sangat jelas, tetapi ia juga mempunyai kekurangan jika juruweb telah mengoptimumkannya dan menggunakan teknologi tanpa kuki, atau web halaman Jika anda menggunakan pelayan yang berbeza daripada sumber statik, maka sumber css dan js yang diperlukan oleh halaman web tidak berada dalam domain yang sama dengan html utama, dan mungkin tidak berada pada IP yang sama Kemudian pra-sambungan bukan sahaja tidak berguna , tetapi juga akan menyebabkan kesulitan kepada pelayan html utama beban yang diperlukan.
Sebab lain
Ramai orang di Internet telah menulis artikel berkaitan Kebanyakan sebabnya adalah kerana saiz pengepala melebihi saiz, menyebabkan respons sebanyak 400, memberitahu ia menjadi permintaan yang buruk. Tetapi sebenarnya ada kemungkinan lain, iaitu seperti alat ujian pelabuhan, yang hanya memeriksa sama ada pelabuhan itu hidup. Perkara seperti lvs juga boleh menyebabkan masalah seperti ini, dan kemudian banyak 400 ralat akan muncul dalam log.
Untuk masalah di atas, anda boleh meningkatkan kedua-dua client_header_buffer_size dan large_client_header_buffers dalam nginx.conf untuk mengurangkan masalah ini.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan sejumlah besar ralat http 400 dalam log akses nginx pelayan Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

1. 2. Prestasi tinggi memerlukan pergantungan pada cache (redis), pengoptimuman pangkalan data, CDN dan giliran tak segerak; 3. Keselamatan mesti dilakukan dengan penapisan input, perlindungan CSRF, HTTPS, penyulitan kata laluan dan kawalan kebenaran; 4. Pengiklanan pilihan wang, langganan ahli, ganjaran, komisen, pembayaran pengetahuan dan model lain, terasnya adalah untuk memadankan nada komuniti dan keperluan pengguna.

Untuk membolehkan bekas PHP menyokong pembinaan automatik, terasnya terletak pada mengkonfigurasi proses integrasi berterusan (CI). 1. Gunakan Dockerfile untuk menentukan persekitaran PHP, termasuk imej asas, pemasangan lanjutan, pengurusan ketergantungan dan tetapan kebenaran; 2. Konfigurasi alat CI/CD seperti Gitlabci, dan tentukan peringkat binaan, ujian dan penempatan melalui fail .gitlab-ci.yml untuk mencapai pembinaan, pengujian dan penggunaan automatik; 3. Mengintegrasikan kerangka ujian seperti PHPUnit untuk memastikan ujian secara automatik dijalankan selepas perubahan kod; 4. Gunakan strategi penempatan automatik seperti Kubernet untuk menentukan konfigurasi penempatan melalui fail penyebaran.yaml; 5. Mengoptimumkan Dockerfile dan mengamalkan pembinaan pelbagai peringkat

Peranan utama homebrew dalam pembinaan persekitaran MAC adalah untuk memudahkan pemasangan dan pengurusan perisian. 1. Homebrew secara automatik mengendalikan kebergantungan dan merangkumi kompilasi kompleks dan proses pemasangan ke dalam arahan mudah; 2. Menyediakan ekosistem pakej perisian bersatu untuk memastikan penyeragaman lokasi pemasangan perisian dan konfigurasi; 3. Mengintegrasikan fungsi pengurusan perkhidmatan, dan dengan mudah boleh memulakan dan menghentikan perkhidmatan melalui brewservices; 4. Menaik taraf dan penyelenggaraan perisian yang mudah, dan meningkatkan keselamatan dan fungsi sistem.

Membina persekitaran kontena tugas PHP yang bebas boleh dilaksanakan melalui Docker. Langkah -langkah khusus adalah seperti berikut: 1. Pasang Docker dan DockerCompose sebagai asas; 2. Buat direktori bebas untuk menyimpan fail Dockerfile dan Crontab; 3. Tulis Dockerfile untuk menentukan persekitaran PHPCLI dan memasang cron dan sambungan yang diperlukan; 4. Tulis fail crontab untuk menentukan tugas masa; 5. Tulis direktori script-compose.yml mount dan konfigurasikan pembolehubah persekitaran; 6. Mulakan bekas dan sahkan log. Berbanding dengan melaksanakan tugas masa dalam bekas web, bekas bebas mempunyai kelebihan pengasingan sumber, persekitaran murni, kestabilan yang kuat, dan pengembangan yang mudah. Untuk memastikan penangkapan dan penangkapan ralat

Sahkan nama peranti cakera keras sasaran (seperti /dev /sda) untuk mengelakkan secara tidak sengaja memadam cakera sistem; 2. Gunakan sudoddif =/dev/sifar =/dev/sdxbs = 1mstatus = kemajuan untuk menimpa nilai sifar dalam cakera penuh, yang sesuai untuk kebanyakan senario; 3. Gunakan sudoshred-v-n3/dev/sdx untuk tiga data rawak overwrites untuk memastikan ia tidak dapat dipulihkan; 4. Secara pilihan melaksanakan Sudobadblocks-WSV/Dev/SDX untuk ujian menulis yang merosakkan; Akhirnya gunakan sudohexdump-c/dev/sdx | kepala untuk mengesahkan sama ada semuanya sifar dan melengkapkan selamat.

Untuk menyelesaikan masalah ketidakkonsistenan antara persekitaran dan pengeluaran PHP, terasnya adalah menggunakan keupayaan kontena dan orkestra Kubernetes untuk mencapai konsistensi alam sekitar. Langkah -langkah khusus adalah seperti berikut: 1. Membina imej Docker bersatu, termasuk semua versi PHP, sambungan, kebergantungan dan konfigurasi pelayan web untuk memastikan imej yang sama digunakan dalam pembangunan dan pengeluaran; 2. Gunakan konfigurasi dan rahsia Kubernetes untuk menguruskan konfigurasi yang tidak sensitif dan sensitif, dan mencapai penukaran fleksibel konfigurasi persekitaran yang berbeza melalui gunung volum atau suntikan pembolehubah persekitaran; 3. Memastikan konsistensi tingkah laku aplikasi melalui fail definisi penyebaran Kubernet yang bersatu (seperti penggunaan dan perkhidmatan) dan termasuk dalam kawalan versi; 4.

cronisusedforpreciseschedulingonalways-onsystems, manakalaCronensureSperiodictasksrunonsystemsthataren'tcontinuouslypowered, suchaslaptops; 1.usecronforexacttiming (cth

Untuk mengkonfigurasi persekitaran PHP untuk menyokong MongoDB, langkah teras adalah untuk memasang dan membolehkan pemacu PHP MongoDB untuk membolehkan aplikasi PHP berkomunikasi dengan pangkalan data MongoDB. 1. Pasang pemacu MongoDBPHP, disarankan untuk menggunakan PECL untuk dipasang. Jika tidak ada PECL, anda perlu terlebih dahulu memasang pakej pembangunan PHP dan alat kompilasi yang berkaitan; 2. Edit fail php.ini dan tambah lanjutan = mongodb.so (atau .dll) untuk membolehkan pelanjutan; 3. Mulakan semula pelayan Web atau perkhidmatan PHP-FPM untuk membuat konfigurasi berkuat kuasa; 4. Sahkan sama ada lanjutan dimuatkan dengan jayanya melalui phpinfo () atau php-m. Soalan yang sering ditanya termasuk arahan PECL yang hilang, kesilapan kompilasi, php.ini
