Nhật ký mod_remoteip và nhật ký truy cập


9

Kể từ Apache 2.4, tôi đã bắt đầu sử dụng mod_remoteip thay vì mod_extract_forwarded để viết lại địa chỉ máy khách từ x-Forwarded-for được cung cấp bởi các máy chủ frontend (véc ni, mực, apache, v.v.).

Cho đến nay mọi thứ đều hoạt động tốt với các mô-đun, ví dụ: php, cgi, wsgi, v.v ... - địa chỉ khách hàng được hiển thị như mong muốn, nhưng tôi không thể ghi địa chỉ khách hàng vào nhật ký truy cập (% a,% h,% {c } a). Không có may mắn - Tôi luôn nhận được 127.0.0.1 (ví dụ chuyển tiếp localhost).

Làm cách nào để đăng nhập địa chỉ IP của khách hàng khi sử dụng mod_remoteip?

Cập nhật: CÔNG TRÌNH CNTT O_O - xem câu trả lời bên dưới


bạn có thể muốn thêm cấu hình cụ thể mà bạn sử dụng / đã thử nghiệm. Ngoài ra, trong khi không có chi tiết, điều này có thể giúp: knowledgevoid.com/blog/2012/01/13/ Giả sử bạn đã đọc httpd.apache.org/docs/trunk/mod/mod_remoteip.html#page-header aswell ? stackexchange có một vài câu hỏi mà bạn có thể muốn đọc: stackoverflow.com/questions/25455731/
Dennis Nolte

cấu hình được xây dựng lại, bây giờ nó hoạt động O_O
GioMac

Câu trả lời:


20

cấu hình véc ni:

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;
    }
}

phần cấu hình apache 2.4:

mod_remoteip:

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8

ghi nhật ký (% a thực hiện công việc):

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

+

nếu có nginx ở phía trước (ví dụ: chấm dứt 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
Nếu bạn chấp nhận câu trả lời này, bạn nên thưởng tiền thưởng, ngay cả khi đó là câu trả lời của riêng bạn.
mc0e

Bạn có vui lòng cập nhật thông tin này không, hoặc cung cấp cho chúng tôi biến thể cho http.cf -connect-ip từ CloudFlare? Không có may mắn làm cho nó hoạt động, xin lỗi.
Ruslan Abuzant

Bạn thực sự nên sử dụng $ proxy_add_x_forwarded_for thay vì $ remote_addr cho Nginx X-Forwarded-For. Điều đó có chức năng tương tự như ví dụ Varnish, trong khi $ remote_addr không bao gồm các giá trị X-Forwarded-For trước đó
Andy

4

Theo tài liệu của mod_remoteip , mô-đun chỉ cần thay thế địa chỉ IP của máy khách, nhưng chỉ khi RemoteIPHeader x-forwarded-forđược đặt ( doc ). Ngoài ra, hãy đảm bảo rằng việc ghi nhật ký vhost của bạn sử dụng CustomLog mà bạn đã xác định.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.