Saya ingin membatasi akses untuk beberapa VHosts sehingga hanya 127.0.0.1 yang dapat mengaksesnya. Saya selalu menggunakan sesuatu seperti ini untuk mengikat VHost ke localhost dan bukan IP eksternal:
server {
listen 127.0.0.1;
server_name myvhost.local;
location / {
....
}
}
Tapi saya perhatikan bahwa beberapa tutorial juga termasuk allow
arahan eksplisit untuk localhost dan secara eksplisit menyangkal semua yang lain:
server {
listen 127.0.0.1;
server_name myvhost.local;
location / {
allow 127.0.0.1;
deny all;
...
}
}
Apakah ini allow
/ deny
arahan benar-benar diperlukan ketika saya sudah mendengarkan hanya di 127.0.0.1?
allow 127.0.0.1/32;
allow
sama sekali karena saya setlisten
ke127.0.0.1
.Jawaban:
The
listen
direktif memberitahu sistem operasi pada apa antarmuka mengikat web server itu sendiri. Jadi, ketika Anda melihatnetstat -a
setelah memulai nginx, Anda akan melihat bahwa nginx hanya mendengarkan 127.0.0.1 IP port 80, yang berarti bahwa server nginx tidak dapat dijangkau melalui antarmuka lain.Mengikat ke alamat IP tertentu bekerja di level yang lebih rendah di tumpukan jaringan aktual daripada
allow
/deny
arahan di dalam konfigurasi nginx.Ini berarti bahwa Anda tidak perlu terpisah
allow
/deny
arahan di dalam konfigurasi Anda dengan use case Anda, karena koneksi dibatasi lebih rendah di tumpukan jaringan.Jika Anda
listen 80;
hanya menentukan , dan menggunakanallow
/deny
arahan, maka nginx akan mengirim kode kesalahan HTTP ke klien, memberi tahu bahwa akses ditolak.Dengan
listen 127.0.0.1;
case ini, browser tidak dapat terhubung ke server sama sekali, karena tidak ada port TCP terbuka untuk browser untuk terhubung.sumber
netstat
menunjukkan alamat lokal0.0.0.0:80
(semua antarmuka). Lalu bisakah saya masih menghilangkandeny
/allow
di server hanya lokal?listen 80 default_server;
arahan ketika klien meminta vhost terikat127.0.0.1:80
. Jika Anda tidak memiliki yangdefault_server
ditentukan, maka itu akan menampilkan server yang telahlisten 80;
ditetapkan.listen 127.0.0.1
-server dan saya bahkan tidak perluallow/deny
di server ini?Katakanlah ID jaringan Anda
192.168.1.0
, edit file conf Anda seperti:Tolong beri tahu saya cara kerjanya untuk Anda.
Edit # 1:
Ya, arahan izin adalah suatu keharusan menurut wiki Nginx Resmi . Contoh mereka adalah:
sumber
127.0.0.1
;) Pertanyaan saya adalah apakah saya perlu ituallow
sama sekali karena saya sudah diaturlisten
untuk127.0.0.1
.Saya ingin mencapai fungsionalitas yang sama (hanya mengizinkan pengguna lokal di nginx) dan saya menemukan bahwa saya dapat melakukan sesuatu yang sederhana seperti ini:
File konfigurasi ini berfungsi dengan baik untuk saya, saya tidak menggunakan
allow
arahan apa pun , tetapi hanya127.0.0.1:80
, dan dengan itu saya dapat membatasi akses nginx hanya untuk pengguna lokal!sumber