Selepas kami menggunakan aplikasi tornado menggunakan konfigurasi nginx di bawah
upstream frontends {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
Semua permintaan IP yang diminta dalam tornado.log akan dipaparkan sebagai 127.0.0.1, serupa dengan yang berikut[I 130125 21:44:54 web:1447] 200 GET / (127.0.0.1) 16.00ms
Bagaimana untuk menjadikan alamat IP dalam paparan tornado.log sebagai IP sebenar apabila menggunakan proksi terbalik nginx?
Jawapan betul: Selain konfigurasi nginx yang betul, yang lebih penting, xheaders=True perlu ditetapkan dalam httpserver tornado
tornado.httpserver.HTTPServer(Application(), xheaders=True)
Boleh dilalui dalam puting beliung
Untuk mendapatkannya, tetapi kadangkala mungkin terdapat beberapa masalah, lihat isu ini di github: https://github.com/facebook/tornado/i...
Prinsipnya ialah membaca beberapa pengepala HTTP
Begitu juga, pelaksanaan dalam PHP adalah seperti berikut:
Jika ia adalah proksi terbalik, anda boleh menambah konfigurasi sedemikian pada nginx:
proxy_pass http://frontends;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Hos $http_host;