Mengatur Nginx Agar Bisa Menggunakan .htaccess

 Dapatkan update terbaru Linuxku.com di kanal Telegram https://telegram.me/linuxkudotcom

Minggu lalu kita sudah membahas mengenai instalasi dan konfigurasi Nginx. Tulisan kali ini masih mengenai pembahasa tentang Nginx yakni membahas mengenai bagaimana cara menggunakan .htaccess di Nginx. 

Perlu diketahui bahwasanya Nginx itu pada dasarnya itu tidak dapat menggunnakan .htaccess. Dan sangat disayangkan bahwa .htaccess hanya dapat bekerja maksimal di Apache, tidak pada Nginx, IIS, atau Web Server lainnnya. Jadi dengan kata lain, jika Anda bermigrasi misalnya dari Apache ke Nginx, perlu ada penyesuaian mengenai .htaccess. Padahal banyak sekali aplikasi PHP misalnya yang mengatur proses rewrite url atau security di berkas .htaccess ini.


Untuk mengatasi hal ini adalah dengan cara Anda mengkonversi .htaccess itu ke dalam bahasa pengaturan Nginx, yang ditaru dalam satu berkas konfigurasi di masing-masing virtual-host Anda. Misalnya bagi pengguna Debian/Ubuntu berada dalam berkas di /etc/nginx/sites-available/.

Seperti yang kita ketahui bahwasanya setiap distro Linux memiliki perbedaan dalam hal selain paket manager yang ia gunakan, juga beberapa konfigurasi dari aplikasi ada yang berbeda contohnya seperti Nginx.

Nah, di sini penulis hanya menjabarkan beberapa distro Linux yang mana terkenal banyak dipergunakan dilingkungan server.

Pengguna Debian dan Ubuntu
$ sudo nano /etc/nginx/sites-available/nama_situs_Anda
Pengguna Centos, Fedora dan RHEL
Untuk Pengaturan Default
$ sudo nano /etc/nginx/nginx.conf

Untuk Pengaturan Persitus
$ sudo nano /etc/nginx/conf.d/nama_situs_Anda.conf
Nah Anda akan melihat konfigurasi Nginx Anda seperti demikian:
    location / {
                     try_files $uri $uri/ /index.html;
        }
Nah ubah menjadi
location / {
      try_files $uri $uri/ /index.php?$args;
}
Seperti gambar berikut:
Pengaturan di atas sudah penulis terapkan dibeberapa CMS seperti WordPress dan Joomla dan semua berjalan sempurna.
Lalu bagaimana jika beberapa direktori terdapat .htaccess yang mana direktori tersebut berfungsi untuk menghalangi agar tidak dapat diakses dari luar secara langsung? Contoh kasus seperti di bawah ini:
Pada phpBB 3.0.3, ada beberapa berkas .htaccess, yaitu:
  • Pada direktori utama  .htaccess
  • cache/.htaccess
  • files/.htaccess
  • images/avatars/upload/.htaccess
  • store/.htaccess

Contohnya .httaccess nya:

<FILES "*.html">
ForceType 'text/html; charset=UTF-8'
</FILES>
DirectoryIndex index.php

AuthUserFile  /home/p/public_html//.htpasswd
AuthGroupFile /home/p/public_html//.htgroup

AuthName "Protected Area"
AuthType Basic

<FILES .htpasswd>
deny from all
</FILES>

<FILES .htgroup>
deny from all
</FILES>

Maka dikonversi ke pengaturan Nginx menjadi:

index index.php;
auth_basic "Protected Area";
auth_basic_user_file /home/p/public_html//.htpasswd;

        location ~ /.ht {
                 deny all;
        }


Misalnya lagi .httacess nya sebagai berikut:

<Files "config.php">
Order Allow,Deny
Deny from All
</Files>

<Files "common.php">
Order Allow,Deny
Deny from All
</Files>


Maka berkas konfigurasi Nginx nya:

location ~ ^/(common|config).php {
    deny all;
}


Jika ingin .htaccess seperti pada kasus phpBB di atas yakni sebagai berikut:

location ~ ^/(common|config).php {
    deny all;
}

location ~ ^/(cache|files|store)/ {
    deny all;
}

location ~ ^/images/avatars/upload/ {
    deny all;
}



Masih bingung dengan .htaccess di Nginx? Jika iya, Anda bisa memanfaatkan tools berikut:

Jika Anda online manfaatkan situs berikut: http://winginx.com/en/htaccess

atau jika Anda offline bisa mem-clone Github tersebut:
https://github.com/mow/apache2nginx

Semoga bermanfaat 🙂

Sumber:

Komentar Pembaca . . .

Yakin Ngga Mau Diskusi ?

Yuk diskusi cerdas. Gunakan nama asli agar komentar Anda disetujui.