Label

Rabu, 12 Maret 2025

sub_filter atau bersamaan dengan sub_filter di Nginx

 perintah-perintah lain yang bisa digunakan dalam blok sub_filter atau bersamaan dengan sub_filter di Nginx, ada beberapa perintah tambahan yang bisa digunakan untuk mengontrol cara Nginx memproses dan mengirimkan respons. Berikut beberapa yang mungkin berguna:


1. add_header (Menambahkan Header di Respons)

Kamu bisa menambahkan header HTTP tambahan dalam respons yang sudah dimodifikasi oleh sub_filter:

nginx

location / { proxy_pass http://backend; sub_filter "old-text" "new-text"; sub_filter_once off; add_header X-Custom-Header "Filtered by Nginx"; }

Ini akan menambahkan header X-Custom-Header: Filtered by Nginx pada respons.


2. expires (Mengontrol Cache di Browser)

Jika ingin mengontrol cache browser terhadap konten yang sudah dimodifikasi:

nginx

location / { proxy_pass http://backend; sub_filter "old-text" "new-text"; sub_filter_once off; expires 1h; }

Ini akan mengatur agar respons hanya disimpan dalam cache browser selama 1 jam.


3. etag (Mengaktifkan ETag untuk Kontrol Cache)

Mengaktifkan ETag bisa membantu browser mengetahui apakah konten telah berubah:

nginx

etag on;

Jika diaktifkan, browser bisa memeriksa apakah konten sudah berubah sebelum mengunduh ulang.


4. gzip (Mengaktifkan Kompresi Respons)

Agar hasil dari sub_filter tetap ringan, kamu bisa mengaktifkan kompresi gzip:

nginx

gzip on; gzip_types text/html text/plain text/css application/javascript;

Ini akan mengompresi konten yang sudah dimodifikasi oleh sub_filter sebelum dikirim ke klien.


5. proxy_set_header (Mengubah Header Saat Menggunakan proxy_pass)

Jika sub_filter digunakan dalam proxy, kamu bisa menyesuaikan header yang dikirim ke backend:

nginx

location / { proxy_pass http://backend; sub_filter "old-text" "new-text"; sub_filter_once off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }

Ini memastikan backend menerima header yang benar dari Nginx.


6. rewrite (Mengubah URL Sebelum Diproses)

Jika kamu ingin mengganti bagian dari URL sebelum diproses lebih lanjut:

nginx

rewrite ^/old-path(.*)$ /new-path$1 redirect;

Mengarahkan old-path ke new-path sambil mempertahankan bagian lain dari URL.


7. set (Menyimpan Nilai dalam Variabel)

Kamu bisa menggunakan variabel dalam sub_filter untuk membuatnya lebih dinamis:

nginx

set $new_domain "newsite.com"; sub_filter "oldsite.com" $new_domain;

Ini mengganti oldsite.com dengan newsite.com, tetapi lebih fleksibel karena menggunakan variabel.


Kesimpulan

Selain sub_filter, kamu bisa menggunakan perintah-perintah ini dalam konfigurasi Nginx:

  • add_header → Menambahkan header HTTP
  • expires → Mengontrol cache browser
  • etag → Mengaktifkan ETag untuk kontrol cache
  • gzip → Mengaktifkan kompresi respons
  • proxy_set_header → Menyesuaikan header dalam proxy
  • rewrite → Mengubah URL sebelum diproses
  • set → Menyimpan nilai dalam variabel

Kalau ada kasus spesifik yang ingin kamu atur, kasih tahu aja! 


Cara Penulisan rewrite di Nginx

Perintah rewrite di Nginx digunakan untuk mengubah URL sebelum diproses lebih lanjut. Format dasarnya adalah:

nginx

rewrite regex replacement [flag];
  • regex → Pola ekspresi reguler untuk mencocokkan URL.
  • replacement → URL pengganti setelah aturan rewrite diterapkan.
  • flag (opsional) → Menentukan bagaimana aturan rewrite bekerja.

Contoh Penggunaan rewrite

Berikut beberapa contoh aturan rewrite yang umum digunakan:

1. Redirect URL ke Path Lain

Mengalihkan semua akses dari /old-path ke /new-path tanpa mengubah domain.

nginx

rewrite ^/old-path$ /new-path redirect;

Jika pengguna mengakses example.com/old-path, mereka akan diarahkan ke example.com/new-path.


2. Redirect dengan Query String

Jika ingin mempertahankan query string dari URL lama ke yang baru:

nginx

rewrite ^/search/(.*)$ /newsearch?q=$1 redirect;

Jika pengguna membuka example.com/search/keyword, akan dialihkan ke example.com/newsearch?q=keyword.


3. Redirect 301 (Permanen)

Untuk pengalihan permanen, gunakan permanent:

nginx

rewrite ^/old-page$ /new-page permanent;

Pengguna dan mesin pencari akan diarahkan secara permanen ke halaman baru.


4. Redirect dengan return (Alternatif)

Jika hanya ingin mengalihkan tanpa perlu memeriksa banyak aturan rewrite, gunakan return:

nginx

return 301 https://example.com/new-page;

Lebih efisien daripada rewrite untuk redirect sederhana.


5. Menghapus .php dari URL

Jika ingin pengguna mengakses example.com/page tetapi di belakangnya tetap page.php:

nginx

rewrite ^/(.*)/?$ /$1.php last;

Jika pengguna membuka example.com/about, Nginx akan meneruskan ke example.com/about.php tanpa mengubah URL di browser.


6. Menambahkan atau Menghapus Tailing Slash (/)

Menambahkan trailing slash ke semua URL yang tidak memiliki / di akhir:

nginx

rewrite ^(.+[^/])$ $1/ permanent;

Sebaliknya, untuk menghapus / di akhir URL:

nginx

rewrite ^/(.*)/$ /$1 permanent;

7. Menggunakan rewrite di dalam server atau location

Jika ingin menerapkan rewrite dalam blok server atau location:

nginx

server { listen 80; server_name example.com; location /old { rewrite ^/old$ /new permanent; } }

Semua akses ke example.com/old akan diarahkan ke example.com/new.


Penjelasan flag dalam rewrite

FlagFungsi
lastMenghentikan proses rewrite dan lanjut ke konfigurasi location yang cocok.
breakMenghentikan eksekusi aturan rewrite selanjutnya dalam lokasi yang sama.
redirectMengembalikan kode status 302 (Temporary Redirect) ke browser.
permanentMengembalikan kode status 301 (Permanent Redirect) ke browser.

Kesimpulan

  • Gunakan rewrite untuk mengubah URL sebelum diproses oleh server.
  • Gunakan redirect untuk pengalihan sementara (302) dan permanent untuk pengalihan permanen (301).
  • Gunakan return jika hanya butuh pengalihan sederhana tanpa regex.
  • Pastikan aturan rewrite tidak bertabrakan dengan aturan lain di server atau location

Terbaru

modul pwm dengan arduino pro mini dilengkapi dengan batrai level meter 5 led

  🔋 Contoh Indikator Level Baterai dengan LED (4 Tingkat) 🔧 Tujuan: LED1 menyala jika tegangan ≥ 12.6V (full) LED2 menyala jika teg...

Lainya