Apa arti at-sign “@” di blok lokasi nginx?


20

Saya telah menemukan beberapa pertanyaan dan jawaban di sini yang menggunakan sintaks ini:

location @default {
  # ...
}

location /somewhere {
    try_files $uri @default;
}

Saya telah mencari tinggi dan rendah di Google dan sepertinya saya tidak dapat menemukan dokumentasi tentang itu. Apa maksudnya dan apa saja kegunaan praktisnya? Apakah ini semacam deklarasi dan penugasan variabel? Maaf untuk pertanyaan pemula.

Jawaban:


10

Jawabannya ada dalam dokumentasi resmi .

Awalan "@" menentukan lokasi yang ditentukan. Lokasi seperti itu tidak digunakan untuk pemrosesan permintaan reguler, melainkan digunakan untuk pengalihan permintaan. Mereka tidak bisa disarangkan, dan tidak bisa berisi lokasi bersarang.


37
Sebagai penjelasan, ini sama sekali tidak mengatakan apa-apa.
Stefano Borini

Jadi ini tidak terlalu berbeda dengan memiliki blok normal dengan internal di dalamnya?
James

14

Dalam contoh yang Anda kutip dalam pertanyaan Anda:

location @default {
  # ...
}

location /somewhere {
  try_files $uri @default;
}

Jika permintaan masuk diterima di http: // domain Anda / di suatu tempat , maka lokasi cocok / di suatu tempat dan ia mencoba di dua tempat secara berurutan untuk menemukan respons, seperti yang ditentukan oleh arahan try_files, merespons dengan percobaan pertama yang berhasil.

  1. pertama-tama ia menguji apakah ada file di lokasi / di suatu tempat, dan jika file itu ada, dikembalikan dalam respons.
  2. jika gagal, ia mencoba opsi fallback try_files, @default, yang disebut dengan nama_lokasi . Respons untuk names_lokasi ini ditentukan oleh location @defaultarahan. Sebuah named_location tidak akan pernah cocok permintaan yang masuk, dan digunakan oleh referensi untuk menentukan respon dalam arahan lokasi lain.

Dengan cara ini, pernyataan if dapat dihindari (jika file ada, kemudian gunakan, jika tidak, sebutkan sebagai spec'd di directive locationdefault). Jadi itu dapat digunakan sebagai singkatan untuk kondisi jika. Pernyataan "If" jelas "disukai" oleh para penulis nginx ( jika jahat ) karena mereka memiliki beberapa keterbatasan dan mungkin tidak memberikan hasil yang diharapkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.