Ưu tiên vị trí của Nginx


Câu trả lời:


351

Từ các tài liệu mô-đun lõi HTTP :

  1. Các chỉ thị có tiền tố "=" khớp chính xác với truy vấn. Nếu tìm thấy, tìm kiếm dừng lại.
  2. Tất cả các chỉ thị còn lại với chuỗi thông thường. Nếu trận đấu này sử dụng tiền tố "^ ~", quá trình tìm kiếm sẽ dừng lại.
  3. Biểu thức chính quy, theo thứ tự chúng được xác định trong tệp cấu hình.
  4. Nếu số 3 mang lại kết quả trùng khớp, kết quả đó sẽ được sử dụng. Nếu không, trận đấu từ # 2 được sử dụng.

Ví dụ từ tài liệu:

location  = / {
  # matches the query / only.
  [ configuration A ] 
}
location  / {
  # matches any query, since all queries begin with /, but regular
  # expressions and any longer conventional blocks will be
  # matched first.
  [ configuration B ] 
}
location /documents/ {
  # matches any query beginning with /documents/ and continues searching,
  # so regular expressions will be checked. This will be matched only if
  # regular expressions don't find a match.
  [ configuration C ] 
}
location ^~ /images/ {
  # matches any query beginning with /images/ and halts searching,
  # so regular expressions will not be checked.
  [ configuration D ] 
}
location ~* \.(gif|jpg|jpeg)$ {
  # matches any request ending in gif, jpg, or jpeg. However, all
  # requests to the /images/ directory will be handled by
  # Configuration D.   
  [ configuration E ] 
}

Nếu nó vẫn còn khó hiểu, đây là một lời giải thích dài hơn .


9

4
Lưu ý rằng cả hai //documents/quy tắc khớp với yêu cầu /documents/index.html, nhưng quy tắc sau được ưu tiên vì đó là quy tắc dài nhất.
arrakis_sun

68

Nó bắn theo thứ tự này.

  1. = (chính xác)

    location = /path

  2. ^~ (trận đấu phía trước)

    location ^~ /path

  3. ~ (trường hợp biểu hiện thông thường nhạy cảm)

    location ~ /path/

  4. ~* (trường hợp biểu hiện thông thường không nhạy cảm)

    location ~* .(jpg|png|bmp)

  5. /

    location /path


3
^ ~ (trận đấu chuyển tiếp) rất quan trọng
iwind

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.