Ada opsi untuk menyembunyikan versi sehingga hanya akan menampilkan nginx, tetapi apakah ada cara untuk menyembunyikannya juga sehingga tidak akan menampilkan apa pun atau mengubah header?
nginx
http-headers
daniels
sumber
sumber
Jawaban:
Seperti Apache, ini adalah edit cepat ke sumber dan kompilasi ulang. Dari Calomel.org :
Sunting Maret 2011: Alat Peraga ke Flavius di bawah ini untuk menunjukkan opsi baru, menggantikan standar HttpHeadersModule Nginx dengan HttpHeadersMoreModule yang bercabang dua . Mengkompilasi ulang modul standar masih merupakan perbaikan cepat, dan masuk akal jika Anda ingin menggunakan modul standar dan tidak akan sering mengubah string server. Tetapi jika Anda menginginkan lebih dari itu, HttpHeadersMoreModule adalah proyek yang kuat dan memungkinkan Anda melakukan segala macam sihir hitam runtime dengan header HTTP Anda.
sumber
r->headers_out.server
.Jika Anda menggunakan nginx untuk membuat proksi aplikasi back-end dan ingin back-end mengiklankan
Server:
tajuknya sendiri tanpa menimpa nginx, maka Anda dapat masuk ke dalamserver {…}
bait Anda dan mengatur:Itu akan meyakinkan nginx untuk membiarkan header itu sendiri dan tidak menulis ulang nilai yang ditentukan oleh back-end.
sumber
Pembaruan terakhir beberapa waktu yang lalu, jadi inilah yang bekerja untuk saya di Ubuntu:
Kemudian tambahkan dua baris berikut ke
http
bagiannginx.conf
, yang biasanya terletak di /etc/nginx/nginx.conf:Juga, jangan lupa untuk me-restart nginx dengan
sudo service nginx restart
.sumber
more_set_headers 'Server: ';
Sederhana, edit /etc/nginx/nginx.conf dan hapus komentar dari
Cari bagian http .
sumber
Ini sangat sederhana: Tambahkan baris ini ke bagian server:
sumber
nginx-extra
untuk mendapatkan modul itu.Ada modul khusus: http://wiki.nginx.org/NginxHttpHeadersMoreModule
sumber
--add-module=/path-to-headers-more-nginx-module
Instal Nginx Extras
Detail server dapat dihapus dari respons dengan menambahkan dua baris berikut di nginx.conf (di bawah bagian http)
sumber
yum install nginx-extras
tidak berfungsi - saya kira ini bekerja pada Debia / Ubuntu dll denganapt-get
.)Jika Anda setuju dengan hanya mengubah tajuk ke string lain lima huruf atau kurang, Anda bisa menambal binernya.
Yang, sebagai solusi, memiliki beberapa keunggulan penting. Yaitu, bahwa Anda dapat mengizinkan versi nginx Anda ditangani oleh manajer paket (jadi, tidak ada kompilasi dari sumber) bahkan jika nginx-ekstra tidak tersedia untuk distro Anda, dan Anda tidak perlu khawatir tentang tambahan apa pun kode sesuatu seperti nginx-ekstra menjadi rentan.
Tentu saja, Anda juga ingin mengatur opsi
server_tokens off
, untuk menyembunyikan nomor versi, atau menambal string format itu juga.Saya mengatakan "lima huruf atau kurang" karena tentu saja Anda selalu dapat mengganti:
dengan
meninggalkan dua byte terakhir tidak berubah.
Jika Anda benar-benar ingin lebih dari lima karakter, Anda ingin membiarkan server_token aktif, dan mengganti string format (sedikit lebih lama), meskipun sekali lagi ada batas atas pada panjang yang dikenakan oleh panjang string format - 1 (untuk Kereta kembali).
... Jika tidak ada satu pun di atas yang masuk akal bagi Anda, atau Anda belum pernah menambal biner sebelumnya, Anda mungkin ingin menjauh dari pendekatan ini.
sumber
sed
perintah di atas,`which nginx`
bagian mengembalikan path ke biner, dansed
perintah melakukan penggantian byte.nginx
- restart agar perubahan diterapkan. Semua itu dikatakan? Saya mendorong Anda untuk tidak menggunakan salah satu jawaban lainnya. Jika semua hal yang saya katakan belum Anda kenal, dan Anda tidak tahu untuk apa/etc
direktori tersebut, maka peretasan seperti ini agak berbahaya.Satu-satunya cara adalah memodifikasi file src / http / ngx_http_header_filter_module.c. Saya mengubah nginx pada baris 48 ke string yang berbeda.
Apa yang dapat Anda lakukan dalam file konfigurasi nginx adalah untuk menonaktifkan server_tokens . Ini akan mencegah nginx mencetak nomor versi.
Untuk memeriksanya, coba curl -I http://vurbu.com/ | grep Server
Itu harus kembali
sumber
Setelah saya membaca jawaban Parthian Shot, saya menggali
/usr/sbin/nginx
file biner. Kemudian saya menemukan bahwa file tersebut mengandung tiga baris ini.Pada dasarnya dua yang pertama dimaksudkan untuk
server_tokens on;
direktif (termasuk versi Server). Lalu saya mengubah kriteria pencarian untuk mencocokkan baris-baris itu dalam file biner.Setelah saya menggali lebih jauh saya menemukan bahwa pesan kesalahan yang dihasilkan oleh nginx juga termasuk dalam file ini.
Ada tiga dari mereka, satu tanpa versi, dua di antaranya termasuk versi. Jadi saya menjalankan perintah berikut untuk mengganti string nginx dalam pesan kesalahan.
sumber
/usr/sbin
folder menghasilkan ini:sed: can't read is: No such file or directory
Menurut dokumentasi nginx itu mendukung nilai-nilai khusus atau bahkan pengecualian:
tetapi sayangnya hanya dengan berlangganan komersial :
sumber
Saya tahu posting ini agak lama, tetapi saya telah menemukan solusi mudah yang bekerja pada distribusi berbasis Debian tanpa mengkompilasi nginx dari sumber.
Pertama instal paket nginx-ekstra
Kemudian muat modul http nginx http lebih banyak dengan mengedit nginx.conf dan menambahkan baris berikut di dalam blok server
Setelah selesai, Anda akan memiliki akses ke arahan more_set_headers dan more_clear_headers.
sumber
Paket nginx-ekstra sudah ditinggalkan sekarang.
Oleh karena itu berikut ini sekarang bekerja untuk saya ketika saya mencoba menginstal berbagai paket Server more_set_headers: My Very Own Server ';
Anda dapat melakukan hal berikut dan tidak ada informasi server atau versi yang akan dikirim kembali
jika Anda hanya ingin menghapus nomor versi ini berfungsi
sumber
Apakah Anda bertanya tentang nilai header Server dalam respons? Anda dapat mencoba mengubahnya dengan arahan add_header, tetapi saya tidak yakin apakah itu akan berhasil. http://wiki.codemongers.com/NginxHttpHeadersModule
sumber