Saya ingin membatasi akses IP langsung ke situs web saya. Saya menemukan beberapa solusi yang melibatkan .htaccess tetapi tidak ada yang berhasil. Saya juga menemukan satu solusi melalui konfigurasi host virtual apache yang berfungsi dengan baik sampai saya menginstal sertifikat SSL melalui CPanel. Saya sama sekali tidak tahu apa yang diubah dalam file httpd.conf tapi sekarang pengaturan redirect tidak berfungsi bahkan jika saya menghapus sertifikat SSL.
Inilah pengaturan host virtual saya saat ini:
NameVirtualHost 192.168.1.1:80 NameVirtualHost *
<VirtualHost 192.168.1.1:80>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/rotate/public_html
ServerAdmin [email protected]
UseCanonicalName Off
## User rotate # Needed for Cpanel::ApacheConf
UserDir disabled
UserDir enabled rotate
ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
</VirtualHost>
<VirtualHost 192.168.1.1:80>
ServerName 192.168.1.1
Redirect 403 /
ErrorDocument 403 "Sorry, direct IP access not allowed."
DocumentRoot /usr/local/apache/htdocs
ServerAdmin [email protected]
UseCanonicalName Off
UserDir disabled
</VirtualHost>
<VirtualHost *>
ServerName server.mysite.com
DocumentRoot /usr/local/apache/htdocs
ServerAdmin [email protected]
UserDir disabled
</VirtualHost>
NameVirtualHost 192.168.1.1:443
<VirtualHost 192.168.1.1:443>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/rotate/public_html
ServerAdmin [email protected]
UseCanonicalName Off
UserDir disabled
UserDir enabled rotate
ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
SSLEngine on
#SSL stuff here
</VirtualHost>
IP dan nama diganti dengan yang generik. Bagian "Redirect 403 /" tidak berfungsi sejak menginstal sertifikat SSL. Saya akan berterima kasih jika seseorang dapat menjelaskan apa yang saya lakukan salah di sini. Terima kasih.
sumber
Jawaban:
Dan voila, perbaikannya:
Solusinya adalah cukup mengganti IP dengan nama domain untuk semua pengaturan virtualhost, kecuali untuk yang perlu mengarahkan / membatasi akses IP langsung.
sumber
Jawabannya bisa jauh lebih sederhana.
Cukup salin ini ke bagian bawah httpd.conf (biasanya terletak di / etc / httpd / conf)
Maka hanya ketika pengunjung mengakses oleh www.example.com, ia dapat memperoleh akses ke server.
sumber
Anda tidak dapat menonaktifkan akses IP langsung ke server Anda melalui HTTPS karena nama host untuk virtualhost Anda dienkripsi di dalam sertifikat SSL.
Klien harus terhubung ke alamat IP Anda, mengunduh sertifikat, membaca konten, dan kemudian mereka dapat memverifikasi bahwa nama host sudah benar.
Satu-satunya cara lain adalah dengan memberlakukan SNI , tetapi Anda akan menyebabkan masalah bagi pengguna yang menjelajah dengan versi Internet Explorer yang lebih lama.
sumber
https://192.168.1.1
harus memiliki kesalahan SSL (karena URL berbeda dari yang sertifikat).<VirtualHost *:443> SSLEngine on </VirtualHost>
sumber
Saya percaya ini yang Anda cari
http://www.htaccess-guide.com/deny-visitors-by-ip-address/
sumber
Untuk menambahkan jawaban lain, mod_security, jika perlu Anda atur, memiliki aturan untuk melarang akses ke server dengan alamat ip.
sumber
Ini bisa mudah jika Anda tidak meletakkan file Anda di direktori default / var / www / html. Cukup buat direktori lain, katakanlah / web misalnya:
salin file Anda dan ubah chown:
Kemudian buat host virtual dengan konfigurasi berikut:
Jangan lupa untuk mengaktifkan host virtual Anda, contoh:
sumber
Dalam pengaturan Apcahe yang memiliki banyak
.conf
file, prioritasnya adalah file pertama dimuat dan kemudian yang kedua..juga. Jadi, jika Anda menggunakan Ubuntu, file dimuat dalam urutan leksikografis, jadi.conf
file "pertama" yang akan dimuat adalah000-default.conf
( maka 000 namanya ) yang berada di bawah/etc/apache2/sites-available/
direktori.Jadi Untuk mencegah aturan lain diterapkan, kita perlu mendapatkan aturan kita di bagian atas file pertama itu.
dan Anda bisa menambahkan dulu aturan berikut ke file itu.
Dicoba dan diuji pada Ubuntu versi Apache 16.4 x64
> 2.4
Jika Anda menjalankan versi Apache yang lebih rendah, coba ganti
Require all denied
dari kode di atas ke ...sumber
Saya menulis kode sederhana ini dalam PHP untuk membatasi akses ip langsung!
cukup tempel ke file php Anda dan nikmatilah!
sumber