Saya menggunakan nginx untuk server konten statis saya, apakah ada cara saya dapat mengatur header kedaluwarsa untuk setiap file yang memenuhi aturan tertentu? Sebagai contoh, dapatkah saya mengatur tajuk kedaluwarsa untuk semua file yang memiliki ekstensi '.css'?
96
root
set, dalam hal ini Anda harus menambahkan arahan ke blok itu. (Saya tahu ini sudah terlambat, tetapi untuk warga negara masa depan)The
location
direktifThe
expires
direktifsumber
Saya tidak memiliki reputasi yang cukup untuk mengomentari mengapa jawaban yang diterima akan menyebabkan file tidak lagi muncul, tetapi saya menemukan jawabannya dan ingin membantu!
Versi pendek:
Pastikan Anda memiliki direktori root yang ditentukan untuk blok lokasi Anda pada gambar jika Anda tidak memiliki satu set global!
Versi panjang di bawah ini:
Pertama-tama, metode saya untuk mengimplementasikan solusi ini sangat mirip dengan jawaban ini , di mana Anda menulis aturan (seperti pada jawaban yang diterima):
ke dalam file img-cache.conf
dan kemudian sertakan file itu ke dalam
server {...}
arahan Anda .Contoh saya tentang somesite.com di folder yang tersedia di situs saya:
Dengan begitu Anda bisa menambahkan blok lokasi caching gambar ke beberapa situs yang mungkin Anda jalankan.
Kedua, saya memiliki situasi di mana / var / www / saya berisi dua folder yang saya izinkan sebagai public_html - aman dan pelatihan, jadi saya harus membuat blok lokasi spesifik dalam arahan server situs saya yang memilih folder-folder ini.
Karena itu, saya tidak memiliki set direktori root global .
Jadi, ketika Anda membuat blok lokasi gambar Anda , Anda mungkin tidak menyediakan mereka dengan direktori root untuk mencari gambar di dalamnya!
Solusi saya adalah untuk:
sumber
.conf
. Folder yang sesuai dinginx/1.14.0 (Ubuntu)
tampaknya/etc/nginx/snippets/
.Anda juga dapat mengatur kadaluarsa ke maksimum. Berikut adalah arahan yang saya gunakan untuk css dan js.
sumber
Semua solusi yang disebutkan di atas akan menyangkal kemungkinan untuk memiliki alias yang berbeda untuk jalur yang berbeda. Demi memiliki semua kedaluwarsa cache yang berbeda di satu tempat, Anda harus menggunakan peta nginx dengan cara berikut.
...
Off
Menonaktifkan caching,epoch
(untuk masa unix) menghasilkan sumber daya yang selalu diambil ulang,max
menetapkan tanggal ke nilai maksimal peramban.~ Gambar / cocok dengan semua jenis gambar.
Lebih lanjut tentang peta nginx di http://nginx.org/en/docs/http/ngx_http_map_module.html .
sumber
$sent_http_content_type
adalah"text/css;charset=UTF-8"
ekspresi di atas akan gagal.Jika Anda memiliki satu tempat yang merupakan rumah bagi semua file statis Anda, sesuatu seperti ini ...
Jawaban yang diterima menyebabkan nginx tidak menemukan file statis saya. Tidak begitu yakin mengapa, tetapi ini adalah alternatif sederhana.
sumber
/static
folder (apa pun yang Anda atur di lokasi) di akhir alias (tepat setelah.../files
dalam contoh).Karena ini adalah utas yang sangat lama, dan saya menemukan tutorial yang luar biasa.
Mungkin Anda ingin memeriksanya
Cara Menerapkan Caching Browser dengan Modul header Nginx di Ubuntu 16.04
sumber