Làm cách nào để phân phát các tệp được nén trước bằng nginx để chúng sẽ được hiển thị dưới dạng văn bản trong trình duyệt?


17

Tôi có một loạt các tệp nhật ký được nén. Tôi muốn phục vụ với nginx. Tôi muốn chúng được phục vụ theo cách mà chúng được trình duyệt tự động thổi phồng lên. Tôi giả sử điều đó có nghĩa là tôi cần nginx để gửi các tệp dưới dạng .gz với tiêu đề văn bản / thuần túy. Điều này có thể được thực hiện trong apache với một cái gì đó như:

<FilesMatch *.gz>
    ForceType text/plain
</FilesMatch>

Câu trả lời:


24

Bạn cần HttpGzipStaticmô-đun cho việc này. Đặt gzip_static on;trong cấu hình của bạn và tạo .gztập tin của bạn . Bạn sẽ cần phải giữ cả tệp nén và tệp gốc, sau đó bạn có thể yêu cầu, /css.cssvà được phục vụ nén./css.css.gz


Một lưu ý nhỏ: đề nghị rằng thời gian sửa đổi của cả hai tệp (mtime) là như nhau.
Alexander Azarov

2
Và bạn có thể kiểm tra nó hoạt động với curl --header "Accept-Encoding: gzip" -I your_url, và không có --header để kiểm tra nó vẫn phục vụ tệp không nén nếu cần thiết.
Tom

Aparently phương pháp này KHÔNG hoạt động với các chỉ mục như index.html.gz, nếu bạn thêm nó vào danh sách các chỉ mục bằng cách sử dụng "index index.html.gz", nó sẽ được phục vụ dưới dạng tải xuống khi bạn cố truy cập vào "$ url / ". Tôi vẫn đang tìm kiếm một giải pháp có thể làm cho các chỉ mục được nén có thể duyệt được.
sorin

không cần tệp gốc trừ khi bạn sử dụng try_files mailman.nginx.org/pipermail/nginx/2012-June/034102.html . Tôi đã thử với gunzip ontry_files serverfault.com/questions/571733/ trên
rofrol
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.