- Ubuntu 10.04.2
- nginx 0.7.65
Saya melihat beberapa permintaan HTTP aneh yang datang ke server nginx saya.
Untuk lebih memahami apa yang sedang terjadi, saya ingin membuang seluruh data permintaan HTTP untuk pertanyaan semacam itu. (Yaitu membuang semua header dan badan permintaan di suatu tempat saya bisa membacanya.)
Bisakah saya melakukan ini dengan nginx? Atau, apakah ada beberapa server HTTP yang memungkinkan saya melakukan ini di luar kotak, di mana saya dapat mem-proxy permintaan ini dengan cara nginx?
Pembaruan: Perhatikan bahwa kotak ini memiliki banyak lalu lintas normal, dan saya ingin menghindari menangkap semuanya pada tingkat rendah (katakanlah, dengan tcpdump
) dan memfilternya nanti.
Saya pikir akan jauh lebih mudah untuk menyaring lalu lintas yang baik terlebih dahulu dalam aturan penulisan ulang (untungnya saya bisa menulis satu dengan mudah dalam kasus ini), dan kemudian berurusan dengan lalu lintas palsu saja.
Dan saya tidak ingin menyalurkan lalu lintas palsu ke kotak lain hanya untuk dapat menangkapnya di sana tcpdump
.
Pembaruan 2: Untuk memberikan sedikit lebih banyak detail, permintaan palsu memiliki parameter bernama (katakanlah) foo
dalam kueri GET mereka (nilai parameter dapat berbeda). Permintaan yang baik dijamin tidak memiliki parameter ini.
Jika saya dapat memfilter dengan ini tcpdump
atau ngrep
entah bagaimana - tidak masalah, saya akan menggunakan ini.
Jawaban:
Sesuaikan jumlah baris sebelum / sesudah (-B dan -A args) sesuai kebutuhan:
Ini memungkinkan Anda mendapatkan permintaan HTTP yang Anda inginkan, di kotak, tanpa menghasilkan file PCAP besar yang harus Anda muat di tempat lain.
Perlu diingat, bahwa filter BPF tidak pernah tepat, jika ada sejumlah besar paket yang mengalir melalui kotak apa pun, BPF dapat dan akan menjatuhkan paket.
sumber
Saya tidak tahu persis apa yang Anda maksud dengan dump permintaan tetapi Anda dapat menggunakan tcpdump dan / atau wireshark untuk menganalisis data:
Dan Anda dapat menggunakan wireshark untuk membuka file dan melihat percakapan antara server.
sumber
Jika Anda mem-proxy permintaan ke Apache dengan mod_php terinstal, Anda dapat menggunakan skrip PHP berikut untuk membuang permintaan:
Perhatikan bahwa karena Anda menggunakan nginx
$_SERVER['REMOTE_ADDR']
mungkin tidak ada gunanya. Anda harus meneruskan IP asli ke Apache melaluiproxy_set_header X-Real-IP $remote_addr;
, dan Anda dapat menggunakannya sebagai gantinya (atau hanya mengandalkan itu sedang login melaluigetallheaders()
).sumber