Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk menyelesaikan masalah konfigurasi nginx add_header

Bagaimana untuk menyelesaikan masalah konfigurasi nginx add_header

王林
王林ke hadapan
2023-05-17 17:40:061757semak imbas

Prekata

add_header ialah arahan yang ditakrifkan dalam modul pengepala Seperti namanya, ia digunakan untuk menambah pengepala respons http. Tetapi sila ambil perhatian bahawa ia hanya "menambah", bukan menulis semula. Jadi jika pengepala sudah wujud, menggunakan add_header akan menyebabkan masalah. Selain itu, dalam versi nginx yang lebih rendah, add_header tidak menyokong penggunaan dalam halaman ralat.

Ini adalah perintah yang mempunyai banyak perangkap. Peringkat pemprosesannya lebih lewat daripada pemprosesan lokasi Walaupun ia boleh ditulis di lokasi, jika lokasi lain ditulis semula, add_header yang tidak diproses di lokasi sebelumnya akan hilang. Contohnya:

location = /a {
 add_header a 1;
 rewrite / /b;
}
location = /b {
 add_header b 2;
 return 204;
}

Bagaimana untuk menyelesaikan masalah konfigurasi nginx add_header

tidak mempunyai 1 pengepala, bukan? Ini adalah lubang!

Satu lagi perangkap ialah masalah pendua yang disebut pada mulanya, Sebagai contoh, saya ingin menetapkan jenis kandungan untuk kandungan, tetapi kerana terdapat default_type yang ditetapkan secara global, ia diulang.

default_type 'text/plain';

location = /a {
 add_header content-type application/json;
 return 200 '"ok"';
}

Bagaimana untuk menyelesaikan masalah konfigurasi nginx add_header

Sudah tentu terdapat banyak penyelesaian, seperti membiarkan default_type kosong untuk lokasi ini, atau sekadar tidak menggunakan add_header dan mengubah suai default_type untuk lokasi ini.

Perangkap besar terakhir ialah ia tidak boleh berkuat kuasa pada halaman ralat, yang juga ditakrifkan dengan jelas dalam. Contohnya, contoh berikut:

location = /a {
 add_header content-type application/json;
 return 404 '"not found"';
}

Saya berharap untuk membalas dengan json, tetapi memandangkan kod status ialah 404, add_header di sini tidak akan berkuat kuasa.

Bagaimana untuk menyelesaikan masalah konfigurasi nginx add_header

Walaupun contoh ini boleh menggunakan default_type untuk menyelesaikan masalah, bagaimana jika ia adalah pengepala lain? Sebagai contoh, apa yang perlu dilakukan dengan kawalan akses-allow-asal? Kemudian tiada penyelesaian kecuali menggunakan lua atau modul pihak ketiga yang lain untuk menyelesaikannya. Sudah tentu, nginx juga menyedari masalah ini, jadi dokumen itu juga mengatakan bahawa ia menyokong parameter yang dipanggil sentiasa selepas versi 1.7.5. Walaupun nginx telah menyelesaikan masalah ini dengan sendirinya, tengine berdasarkan 1.6.2 hampir gagal.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah konfigurasi nginx add_header. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam