Siarkan konfigurasi pelayan saya dahulu:
server {
listen 80;
server_name xxx;
# 1
location = /favicon.ico {
root /home/www-data/static;
rewrite (.*) /img/designs/admin-favicon.ico;
}
#2
location = /robots.txt {
root /home/www-data/static;
rewrite (.*) /admin-robots.txt;
}
# 3
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:22222;
}
}
Keutamaan laluan carian lokasi rasmi dan penerangan algoritma adalah seperti berikut:
Untuk mencari lokasi yang sepadan dengan permintaan yang diberikan, nginx semak dahulu
lokasi ditakrifkan menggunakan rentetan awalan (lokasi awalan Antara
). mereka, lokasi dengan awalan padanan terpanjang dipilih dan
diingati. Kemudian ungkapan biasa disemak, mengikut urutan
penampilan mereka dalam fail konfigurasi Carian biasa
ungkapan ditamatkan pada perlawanan pertama, dan yang sepadan
konfigurasi digunakan. Jika tiada padanan dengan ungkapan biasa ditemui
maka konfigurasi lokasi awalan yang diingati sebelum ini ialah
digunakan.
Menurut pemahaman saya, algoritma apabila carian Nginx sepatutnya seperti ini:
- Cari lokasi mengikut awalan permintaan dan cari padanan awalan biasa yang paling lama (jika ada = pengubah, lokasi akan dipadankan terus, jika ada ^~ pengubah, lokasi akan digunakan terus), ingat lokasi padanan terpanjang.
- Teruskan mencari padanan biasa dalam susunan konfigurasi Jika ada, padankan lokasi dipadankan secara langsung, jika tidak gunakan lokasi terpanjang biasa
Dalam erti kata lain, mengikut konfigurasi saya, apabila pelayar meminta /favicon.ico, ia harus dipadankan secara langsung dan tepat
1 betul, tetapi sepadan dengan 3 setiap kali.
Saya ingin bertanya kepada semua orang di sini, adakah terdapat penyelewengan dalam pemahaman saya tentang lokasi Nginx? Kemudian mengapa konfigurasi saya terhasil seperti ini?
Selepas mengkonfigurasinya mengikut kaedah poster asal, saya boleh sampai ke #1 di sini.
Saya fikir ia mungkin isu cache CDN. Pengarang boleh cuba menulis semula fail lain atau mencubanya dalam persekitaran tanpa CDN.