Điểm:0

try_files dường như tìm trong thư mục sai

lá cờ hu

Tôi đang cố gắng thiết lập try_files, nhưng đang gặp sự cố: Có vẻ như tệp "empty.png" dự phòng không được chọn, mặc dù tệp nằm ở /path/to/old_cache_data/empty.png. Các tệp thực sự tồn tại (nghĩa là không có tệp dự phòng) được tìm thấy mà không gặp sự cố. Điều thú vị nữa là tôi không nhận được nginx 404, mà là trang 404 từ ứng dụng được xử lý bởi proxy_pass bên dưới.

Những thứ tôi đã thử cho đến nay:

  • Xóa dấu gạch chéo hàng đầu, dẫn đến lỗi gây tò mò này: open() "/usr//htmlempty.png" không thành công (2: Không có tệp hoặc thư mục như vậy), Có vẻ lạ đối với tôi vì /usr/html không được chỉ định ở bất kỳ đâu như bất kỳ loại đường dẫn dự phòng nào.
  • Chỉ định một đường dẫn tuyệt đối (tức là try_files $uri /path/to/old_cache_data/empty.png;)

Quy tắc liên quan:

# bộ đệm tĩnh kế thừa
vị trí /cache/ {
    gốc/đường dẫn/đến/old_cache_data;
    try_files $uri /empty.png;
}

# thông qua
địa điểm / {
    [một loạt các cài đặt proxy]
    proxy_pass [url đích];
}

Vì vậy, không chắc chính xác tôi đang "giữ sai" ở đâu. Nó có vẻ như try_files không nhận trên nguồn gốc ở vị trí nhưng bằng cách nào đó có một dự phòng kỳ lạ.

CHỈNH SỬA: Tôi phát hiện ra rằng việc đặt tệp trống.png trong thư mục con "cache" và thay đổi tệp try_files thành try_files $uri /cache/empty.png; thực sự hoạt động. Tôi không hiểu tại sao đây là trường hợp mặc dù.

Điểm:1
lá cờ gr

Như đã nêu bởi tài liệu, tham số cuối cùng của try_files chỉ thị có thể là

  • một URI mới;
  • Mã lỗi HTTP: = mã;
  • ID vị trí được đặt tên: @tên địa phương.

Bạn đang sử dụng /empty.png được coi là một URI mới Đừng gục ngã ở dưới cái vị trí/bộ đệm {...} do đó được phục vụ bởi địa điểm / { ... }. Khi bạn xóa dấu gạch chéo ở đầu, bạn sẽ nhận được URI mới trống.png điều đó không thuộc bất kỳ vị trí nào của bạn, kể cả địa điểm / { ... }. Mọi người phục vụ khối có một số đường dẫn gốc mặc định tiền tố/html trong đó tiền tố được chỉ định tại thời gian biên soạn và có thể được kiểm tra bằng nginx -V lệnh (có vẻ như của bạn là /usr/). Vì vậy, như được nói bởi nguồn gốc chỉ thị tài liệu,

Đường dẫn đến tệp được tạo bằng cách chỉ thêm một URI vào giá trị của nguồn gốc chỉ thị.

cho chúng ta tiền tố /usr/ + gốc mặc định /html + URI trống.png = /usr//htmlempty.png.

Khi bạn thay đổi lần cuối try_files tham số cho /cache/empty.png, URI này được phục vụ với cùng vị trí/bộ đệm {...} chặn với tập tin /path/to/old_cache_data + /cache/empty.png = /path/to/old_cache_data/cache/empty.png. Và nếu bạn hiểu đúng tất cả các thông tin trên, bạn sẽ nhận thấy rằng với cấu hình của mình, bạn không thể truy cập bất kỳ tệp nào trong /path/to/old_cache_data thư mục ngoại trừ những thư mục trong /path/to/old_cache_data/cache thư mục con. Kiểm tra sự khác biệt giữa nguồn gốcbí danh hướng dẫn để hiểu rõ hơn.

lá cờ hu
Aaaah điều đó thực sự có rất nhiều ý nghĩa. Vâng, tôi đã hiểu nhầm nó chỉ đơn giản là một tệp và không nghĩ về nó như một URL khác được đánh giá lại. Cảm ơn rất nhiều :)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.