Apache CustomLog để đăng nhập URL đầy đủ


16

Tôi muốn thêm một lệnh CustomLogvào cấu hình apache của mình để ghi lại toàn bộ URL được yêu cầu (hoặc ít nhất là phần lưu trữ của URL). Tôi có một số tên miền được xử lý bởi cùng một ví dụ của apache và muốn có thể phân biệt các tên miền trong nhật ký (vì bây giờ tất cả những gì tôi thấy là "GET /"). Tôi thấy trong tài liệu về LogFormat, nó liệt kê %Uđể in phần đường dẫn của URL, nhưng tôi đang tìm máy chủ lưu trữ.

Câu trả lời:


20

Tiếp tục đọc LogFormattài liệu và bạn sẽ tìm thấy:

%...{Foobar}i:  The contents of Foobar: header line(s) in the request
                sent to the server.

Điều đó có nghĩa là bạn có thể bao gồm trong cấu hình của mình:

%{Host}i

Các %v%Vchỉ thị cũng có thể giúp bạn có được những gì bạn muốn.

% v sẽ luôn là giá trị của ServerName("tên chính tắc" của máy chủ ảo của bạn). %V có thể là giá trị của ServerNamehoặc có thể là giá trị của Hosttiêu đề HTTP , tùy thuộc vào việc bạn có UseCanonicalNamebật hay không trong cấu hình của mình (và liệu máy khách có cung cấp Hosttiêu đề hay không ).


Sẽ %{Host}ihoạt động ngay cả đối với HTTP / 1.0? %VNhìn ngay từ cái nhìn đầu tiên, cảm ơn!
jrdioko

Tôi tin rằng% {Host} i (hoặc bất kỳ% {...} i xây dựng) sẽ chỉ tạo ra kết quả nếu tiêu đề đó thực sự tồn tại trong yêu cầu. Vì vậy, đối với HTTP / 1.0, tôi không mong đợi nó sẽ hữu ích.
larsks

Thêm một điều rõ ràng: Vậy %Vsẽ giống hệt %{Host}inếu UseCanonicalNamebị vô hiệu hóa?
jrdioko

1
Theo tài liệu, "Khi sử dụng UseCanonicalName, Apache sẽ hình thành các URL tự giới thiệu bằng cách sử dụng tên máy chủ và cổng do khách hàng cung cấp nếu có bất kỳ được cung cấp (nếu không, nó sẽ sử dụng tên chính tắc, như được định nghĩa ở trên)." Vì vậy, %Vsẽ sử dụng ServerNamenếu không có Hosttiêu đề.
larsks

2

'% v' là Tên máy chủ có thể là những gì bạn muốn?


Dường như %vluôn trả về cùng một chuỗi trong tình huống của tôi: giá trị ServerName bất kể tên miền nào xuất hiện trong URL. Nhưng có %Vvẻ như nó làm đúng.
jrdioko

Điều đó có liên quan đến tên virtualhost
Robert

2

Thêm vào %vđịnh dạng nhật ký của bạn.

Một cái gì đó như thế này:

LogFormat "%v - %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined-vhost
CustomLog /log/file/location combined-vhost

1
Dường như %vluôn trả về cùng một chuỗi trong tình huống của tôi: giá trị ServerName bất kể tên miền nào xuất hiện trong URL. Nhưng có %Vvẻ như nó làm đúng.
jrdioko

2

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Người giới thiệu} i \ "\"% {Tác nhân người dùng} i \ "% {Máy chủ} i% U% q "kết hợp

%{Host}i%U%qcung cấp đầy đủ url.

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.