Apache mod_remoteip และเข้าถึงบันทึก


9

ตั้งแต่ Apache 2.4ฉันเริ่มใช้mod_remoteipแทนmod_extract_forwardedสำหรับการเขียนที่อยู่ไคลเอนต์จากx-forwarded-ให้ไว้โดยเซิร์ฟเวอร์ส่วนหน้า (วานิช, ปลาหมึก, apache และอื่น ๆ )

จนถึงตอนนี้ทุกอย่างทำงานได้ดีกับโมดูลเช่น php, cgi, wsgi ฯลฯ ... - ที่อยู่ไคลเอนต์แสดงตามที่ควร แต่ฉันไม่สามารถเขียนที่อยู่ลูกค้าในบันทึกการเข้าถึง (% a,% h,% {c } ก) ไม่มีโชค - ฉันจะได้รับ 127.0.0.1 (localhost forward ex.) เสมอ

วิธีบันทึกที่อยู่ IP ของลูกค้าเมื่อใช้ mod_remoteip

อัปเดต: IT WORKS O_O - ดูคำตอบด้านล่าง


คุณอาจต้องการเพิ่มการกำหนดค่าเฉพาะที่คุณใช้ / ทดสอบ นอกจากนี้แม้ว่าจะไม่ได้รับรายละเอียดสิ่งนี้อาจช่วยได้: knowledgevoid.com/blog/2012/01/13/ …ฉันคิดว่าคุณอ่านhttpd.apache.org/docs/trunk/mod/mod_remoteip.html#page-headerเช่นกันหรือไม่ stackexchange มีคำถามสองสามข้อที่คุณอาจต้องการอ่าน: stackoverflow.com/questions/25455731/ …
Dennis Nolte

สร้างการกำหนดค่าใหม่ตอนนี้ใช้งานได้ O_O
GioMac

คำตอบ:


20

วานิชการกำหนดค่า:

if (req.restarts == 0) {
    if (req.http.X-Forwarded-For) {
        set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
    } else {
        set req.http.X-Forwarded-For = client.ip;
    }
}

ส่วนการกำหนดค่า apache 2.4:

mod_remoteip:

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8

การบันทึก (% a ทำงาน):

LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

+

หากมี nginx อยู่ข้างหน้า (เช่นการเลิกใช้ SSL):

server {
    listen       123.123.123.123:443;
    server_name  server.com;
    root         html;

    ssl                  on;
    ssl_certificate      /etc/pki/httpd/site/chain.crt;
    ssl_certificate_key  /etc/pki/httpd/site/private.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass   http://127.0.0.1:6081;
        proxy_set_header Host $http_host;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

1
หากคุณยอมรับคำตอบนี้คุณควรให้รางวัลแม้ว่าจะเป็นคำตอบของคุณเองก็ตาม
mc0e

คุณช่วยอัพเดทสิ่งนี้หรือให้ความแตกต่างกับ http.cf-connected-ip จาก CloudFlare ได้ไหม ไม่เคยมีโชคทำให้การทำงานเสียใจ
Ruslan Abuzant

คุณควรใช้ $ proxy_add_x_forwarded_for แทน $ remote_addr สำหรับ Nginx X-Forwarded-For ที่ทำหน้าที่เหมือนกับตัวอย่างวานิชในขณะที่ $ remote_addr ไม่ได้รวมค่า X-Forwarded-For ก่อนหน้า
Andy

4

ตามเอกสารของ mod_remoteipโมดูลควรเปลี่ยนที่อยู่ IP ของลูกค้า แต่เมื่อRemoteIPHeader x-forwarded-forถูกตั้งค่า ( doc ) ตรวจสอบให้แน่ใจด้วยว่าการบันทึก vhost ของคุณใช้ CustomLog ที่คุณกำหนดไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.