Blokir akses website lewat IP di Nginx

Yup, ternyata solusi saya sebelumnya itu salah kaprah. Kasusnya masih berhubungan, dimana salah satu website yang dihosting dalam Nginx bisa diakses kontennya kalau lewat alamat IP VPSnya. Masalahnya hal ini diindeks oleh Google. Yang saya bahas sebelumnya adalah mengalihkan pengunjung yang membuka lewat IP ke URL situsnya, dan aslinya bisa dikatakan cukup.

Tapi karena saya tidak ingin alamat IPnya diketahui umum dan ini pakai CloudFlare maka bisa dikatakan tidaklah ideal. Akhirnya saya putuskan agar memblokir saja seluruh usaha akses ke situsnya apabila datangnya melalui alamat IP. Jadi seakan – akan tidak ada yang dihosting didalamnya.

Oke, kita perlu mengedit nginx.conf dan tambahkan kode berikut dalam blok http{}. Tapi ingat, ini letaknya diatas konfigurasi virtual host Nginx, karena akan diproses secara berurutan.

server {
        return 444;
}

Pas saya coba kode diatas cuma ampuh pada koneksi HTTP.

Jadinya saya cari solusi serupa tapi untuk HTTPS, dan ini yang saya dapatkan. Lokasinya saya tempatkan dibawah kode diatas.

server {
        listen 443 ssl default_server;
        
        server_name _;
        return 444;
}

Solusi alternatif tapi metodenya tetap sama, kalau yang ini malah diposisikan setelah konfigurasi virtual hosting.

server {
        listen 80;
        listen 443;
        server_name 192.168.1.233;
        return 444;
}

Ini berlaku untuk HTTP dan HTTPS, bedanya langsung ditentukan setiap request ke alamat IP server akan ditutup. Silahkan dicoba yang ini kalau yang sebelumnya bermasalah.

Jangan lupa restart Nginx agar setting barunya diterapkan. Dan saya jelaskan bahwa kode 444 ini unik milik Nginx yang artinya koneksi ditutup tanpa respon. Kalau 404 maksudnya konten tidak ditemukan, jadi beda fungsinya.

14 Comments

  1. Hmm, bermanfaat ini kalau ingin menyembunyikan ip vps, bisa untuk meminimalisir celah keamanan karena dari ip salah satu jalan untuk ddos dsb kan mas chandra?

    1. Ya, pertimbangan saya salah satunya itu juga mbak. Hehe. 😀 Sebentar lagi saya mau koreksi karena pas saya uji coba ada yang masih kurang sreg hasilnya.

      1. Sudah mbak, yang kode ketiga. Pakai kode sebelumnya memang sukses tapi kalau digabung malah koneksi HTTPS saya ditolak walaupun pakai nama domain. Makanya saya buru – buru koreksi sebelum menyesatkan. Haha. 😀

        Beda di urutannya juga, yang ini letaknya dibawah baris include /etc/nginx/conf.d/*.conf; dan include /etc/nginx/sites-enabled/*;, jadi dieksekusi paling akhir.

    1. Bisa dijelaskan dulu susunan stacknya mbak? Ini Nginx di depan Apache sebagai reverse proxy atau bagaimana ya? Tujuannya?

  2. sperti klo kita buka vesta cp knappa mesti msukan www.domain.com:8083 di port 8083
    nah public html di vesta cp itu dimana ?

    1. Ya karena itu default port untuk administrasi Vesta mbak, sudah ditentukan dari sananya dan bisa diubah kalau mau. Dan public_html ini maksudnya halaman panel Vesta? Ada di /usr/local/vesta/web

  3. tujuannya agar web mail ku ga smbarang org bisa ngakses ke web maill ku mas klo saat ini kan web mail ku sprti ini www.namadomain.com/webmail nah mksud ak url web mail’nya di ganti dengan port jdi mislanya www.namadomain.com:1100

    1. Coba cek di konfigurasi Nginxnya mbak apakah ada listen untuk Roundcube dan coba diganti portnya, saya sudah ga megang VestaCP (lenyap bersamaan Virtwire), jadi belum bisa ngecek sendiri.

      Tapi kalau mengganti URL bisa lewat setting server di panelnya. Ada opsi Webmail URL.

Tinggalkan Balasan ke Chandra Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *