Nginx – Location block

Location có thể được xác định bằng cách sử dụng một chuỗi tiền tố hoặc bằng cách sử dụng regular expression.

  • Nếu không có tiền tố nào trong một khối location thì chuỗi sau location sẽ được so khớp với phần đầu của URI được yêu cầu.
  • Dấu = được sử dụng để so khớp chính xác location với URI được yêu cầu.
  • Dấu ~ được sử dụng để so sánh có phân biệt chữ hoa/thường với URI được yêu cầu.
  • Dấu ~* được sử dụng để so sánh không phân biệt chữ hoa/thường với URI được yêu cầu.
  • Dấu ^~ được sử dụng để thực hiện so sánh chuỗi dài nhất của URI khớp với regular expression.

Cách Nginx chọn khối location

Tìm trên URI không phân biệt hoa/thường (~*) rồi đến phân biệt hoa thường (~) , không có regular expression trước.

  • NGINX bắt đầu bằng việc tìm kiếm một kết hợp chính xác được chỉ định với location = /some/path/ và dừng ngay khi tìm được.
  • Nếu không có khối location chính xác nào như vậy thì NGINX sẽ tiếp tục tìm kiếm chuỗi dài nhất trong URI (^~) khớp với regular expression.
  • Nếu location không có ^~ đi trước thì kết quả trùng khớp được lưu trữ tạm thời và tiến hành các bước sau. NGINX bây giờ chuyển tìm kiếm sang khối location chứa ~~* và chọn khối location đầu tiên phù hợp với URI và ngay lập tức được chọn để phục vụ yêu cầu.

Thí dụ về location

# location / sẽ khớp với tất cả URI nhưng sẽ được sử dụng như
# phương sách cuối cùng nếu không tìm thấy kết quả phù hợp nào.

location / {
  ...
}

# dấu = trong khối location buộc phải khớp chính xác với URI
# và sau đó ngừng tìm kiếm thêm bất kỳ kết quả nào.
# https://domain.com/images khớp
# nhưng https://domain.com/images/index.html hoặc
# https://domain.com/images/ không khớp

location = /images {
  ...
} # Khối location sau sẽ khớp với bất kỳ URI bắt đầu bằng
# /images/ nhưng tiếp tục tìm kiếm khối cụ thể hơn của URI.
location /images/ { ... } # ^~ trong khối location sau dẫn đến kết quả đối sánh regular # expression phân biệt chữ hoa chữ thường. # Do đó, URI /images hoặc /images/logo.png sẽ được so khớp # nhưng ngừng tìm kiếm ngay khi tìm thấy kết quả trùng khớp. location ^~ /images { ... } # ~* trong khối location tiếp theo khớp với bất kỳ URI nào # (không phân biệt hoa/thường) kết thúc bằng png, ico, gif, # jpg, jpeg, css hoặc js. location ~* .(png|ico|gif|jpg|jpeg|css|js)$ { ... } # ~ trong khối location sau dẫn đến kết quả đối sánh cụm từ có # phân biệt chữ hoa chữ thường nhưng không ngừng tìm kiếm đối # sánh tốt hơn. location ~ /images { ... } # ~* trong khối location sau dẫn đến kết quả đối sánh không # phân biệt hoa/thường nhưng việc tìm kiếm không dừng lại ở đây # để có kết quả phù hợp hơn. location ~* /images { ... }

Comments Off on Nginx – Location block

Filed under Software

Comments are closed.