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
kenew-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
dengannewsite.com
, tetapi lebih fleksibel karena menggunakan variabel.
Kesimpulan
Selain sub_filter
, kamu bisa menggunakan perintah-perintah ini dalam konfigurasi Nginx:
add_header
→ Menambahkan header HTTPexpires
→ Mengontrol cache browseretag
→ Mengaktifkan ETag untuk kontrol cachegzip
→ Mengaktifkan kompresi responsproxy_set_header
→ Menyesuaikan header dalam proxyrewrite
→ Mengubah URL sebelum diprosesset
→ 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 aturanrewrite
diterapkan.flag
(opsional) → Menentukan bagaimana aturanrewrite
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 keexample.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 keexample.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 keexample.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 keexample.com/new
.
Penjelasan flag
dalam rewrite
Flag | Fungsi |
---|---|
last | Menghentikan proses rewrite dan lanjut ke konfigurasi location yang cocok. |
break | Menghentikan eksekusi aturan rewrite selanjutnya dalam lokasi yang sama. |
redirect | Mengembalikan kode status 302 (Temporary Redirect) ke browser. |
permanent | Mengembalikan kode status 301 (Permanent Redirect) ke browser. |
Kesimpulan
- Gunakan
rewrite
untuk mengubah URL sebelum diproses oleh server. - Gunakan
redirect
untuk pengalihan sementara (302) danpermanent
untuk pengalihan permanen (301). - Gunakan
return
jika hanya butuh pengalihan sederhana tanpa regex. - Pastikan aturan
rewrite
tidak bertabrakan dengan aturan lain diserver
ataulocation
Tidak ada komentar:
Posting Komentar