Không có ý nghĩa gì khi ký tên @ Cảnh trong khối vị trí nginx?


20

Tôi đã gặp một vài câu hỏi và câu trả lời ở đây sử dụng cú pháp này:

location @default {
  # ...
}

location /somewhere {
    try_files $uri @default;
}

Tôi đã tìm kiếm cao và thấp trên Googles và dường như tôi không thể tìm thấy bất kỳ tài liệu nào về nó. Nó có nghĩa là gì và một số sử dụng thực tế của nó là gì? Đây có phải là một số loại khai báo biến và gán? Xin lỗi cho câu hỏi của người mới.

Câu trả lời:


10

Câu trả lời là trong tài liệu chính thức .

Tiền tố của @ @ xác định vị trí được đặt tên. Một vị trí như vậy không được sử dụng để xử lý yêu cầu thông thường, mà thay vào đó được sử dụng để chuyển hướng yêu cầu. Chúng không thể được lồng nhau và không thể chứa các vị trí lồng nhau.


37
Như lời giải thích, điều này nói hoàn toàn không có gì.
Stefano Borini

Vì vậy, điều này không đặc biệt khác với việc có một khối bình thường với nội bộ trong đó?
James

14

Trong ví dụ mà bạn trích dẫn trong câu hỏi của bạn:

location @default {
  # ...
}

location /somewhere {
  try_files $uri @default;
}

Nếu yêu cầu đến được nhận tại http: // your-domain / where , thì vị trí khớp / ở đâu đó và nó sẽ thử ở hai nơi một cách tuần tự để tìm phản hồi, như được chỉ định bởi chỉ thị try_files, phản hồi với lần thử thành công đầu tiên.

  1. đầu tiên, nó kiểm tra nếu có một tệp tại vị trí / một nơi nào đó và nếu tệp tồn tại, nó sẽ được trả về trong phản hồi.
  2. nếu điều này không thành công, nó sẽ thử tùy chọn dự phòng try_files, @default, được gọi là tên_location . Phản hồi cho tên_location này được chỉ định bởi lệnh location @default. Một tên_location sẽ không bao giờ khớp với yêu cầu đến và được tham chiếu sử dụng để chỉ định phản hồi trong các chỉ thị vị trí khác.

Bằng cách này, một khi tuyên bố có thể tránh được (nếu tập tin tồn tại, sau đó sử dụng nó, nếu không đáp ứng như spec'd ở vị trí chỉ thị @default). Vì vậy, nó có thể được sử dụng như một tốc ký cho một điều kiện if. Các tuyên bố "Nếu" chắc chắn là "nhíu mày" bởi các tác giả nginx ( nếu là xấu xa ) vì chúng có một số hạn chế và có thể không đưa ra kết quả như mong đợi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.