অ্যাপাচে ইউআরএল স্কিম (HTTP / https) কীভাবে লগ করবেন?


8

nginx $schemeএর log_formatলাইনে পরিবর্তনশীল ব্যবহারযোগ্য has

%H অনুরোধ প্রোটোকল (যেমন "HTTP / 1.1")।

আমি কীভাবে আপাচে একই কাজ করতে পারি?

উত্তর:


3

এটি করার একটি উপায় হ'ল দুটি শর্তসাপেক্ষ CustomLogনির্দেশনা, HTTPSভেরিয়েবল সেট করা আছে কিনা তা দ্বারা নিয়ন্ত্রিত ।

CustomLog logs/access.log "https://..." env=HTTPS
CustomLog logs/access.log "http://..." env=!HTTPS

আমি SetEnvIfনিম্নলিখিত পদ্ধতিতে ব্যবহার করার চেষ্টা করেছি , তবে এটি কার্যকর হয় না (এটি লগ হয় -):

SetEnv URL_SCHEME=http
SetEnvIf HTTPS on URL_SCHEME=https
CustomLog logs/access.log "%{URL_SCHEME}e://..."

1
সিনট্যাক্টিকাল ত্রুটিরmod_env কারণে আপনার প্রচেষ্টা ব্যর্থ হতে পারে । একটি সমান চিহ্ন ছাড়া তার পরিবর্তনশীল এবং মান লাগে: । SetEnvSetEnv URL_SCHEME http
গ্লাসজ

1
এছাড়াও, SetEnvIfলাইনটি অ্যাপাচি <2.4.1-তে কাজ করে না কারণ mod_setenvifস্পষ্টতই এসএসএল পরিবেশে অ্যাক্সেস নেই । প্রায় আমাকে ২.২.২২-তে পাগল করে দিয়েছে।
গ্ল্যাসজ

এই পরিবেশের পরিবর্তনশীলটি mod_ssl এর সাথে সুনির্দিষ্ট বলে মনে হচ্ছে। আপনি যদি mod_gnutls এর মতো অন্য মডিউল ব্যবহার করেন তবে আপনার এটি নেই।
বোর্টজমায়ার

এছাড়াও, mod_sslআপনি যদি পরিবেশের পরিবর্তনশীল সেট করেন তবে আপনি যদি এটির মাধ্যমে এটি করতে স্পষ্টভাবে বলেন SSLOptions
ফ্লোরিয়ান ব্রুকার

3

কোনও কারণে আমি উপরের উদাহরণগুলি কাজ করতে পারি না, সুতরাং অন্য একটি উপায় খুঁজে পেয়েছি: আপনি আপনার কনফিগারেশনে 2 টি পুনর্লিখনের নিয়মগুলি নীচে যুক্ত করতে পারেন:

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [E=SCHEME:HTTP]

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [E=SCHEME:HTTPS]

তারপরে এটি আপনার লগফর্ম্যাট সংজ্ঞাতে যুক্ত করুন।

scheme=\"%{SCHEME}e\"

3

ইউআরএল স্কিমটি অ্যাপাচি লগ ফর্ম্যাটে সরাসরি উপলভ্য না হওয়ায় আপনি বিকল্প হিসাবে% p ব্যবহার করে অনুরোধটি পরিবেশন করা সার্ভারের ক্যানোনিকাল পোর্টটি (যেমন 80/443) লগ করতে পারেন:

CustomLog access.log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" port:%p"

এটি কীভাবে এত দ্রুত দুটি উপগ্রহ পেল? যাইহোক, আপনি কার্যকরভাবে অনুরোধগুলির URL গুলি লগ করতে চান তবে এটি কার্যকর নয়, যার জন্য আপনার প্রোটোকল ইউআরআই স্কিম প্রয়োজন scheme
ভ্লাদিমির পানতেলিভ

বন্দরটি প্রোটোকলকে নির্দেশ করে।
উইক

3

এটি অ্যাপাচি ২.৪.২৩ এর সাথে আমার জন্য কাজ করে:

LogFormat "%{REQUEST_SCHEME}x ..." my_log_format

%{varname}xমোড_এসএসএল লোড হলে কেবল উপলভ্য থাকে, দেখুন: https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#logformats


httpd.apache.org/docs/current/mod/mod_rewrite.html এই পরিবর্তনশীলটিকে নথি করে দেয়।
আর্টেম রাশাকোভস্কিই

যদিও% {VARNAME} x নথিভুক্ত? httpd.apache.org/docs/current/mod/mod_mod_log_config.html x ভেরিয়েবলের কথা উল্লেখ করে না। যদিও কাজ নিশ্চিত।
আর্টেম রাশাকোভস্কিই

-2

আপনার লগ আউটপুট সংজ্ঞায়িত করুন এবং এটিতে% H যুক্ত করুন। এটি আপাচি-র ক্ষেত্রে একই রকম।

সুতরাং, আপনি LogFormatএটির মতো একটি নির্মাণ করেন এবং আফিক সেখানে ডিফল্ট অ্যাপাচি কনফিগারেশনে সংজ্ঞায়িত একটি দম্পতি রয়েছে।

LogFormat "%h %l %u %t \"%r\" %>s %b" common

এবং লগফর্ম্যাটটির নাম যুক্ত করুন (এই ক্ষেত্রে "সাধারণ") আপনার লগফিল কলটির শেষে

CustomLog logs/access_log common

শুধু এখানে বিষয়ে আরও তথ্য জন্য চেহারা লগ এবং এখানে আলাদা ফর্ম্যাট স্ট্রিং সম্পর্কে।


1
উম ... আমি ইতিমধ্যে সেখানে তাকিয়েছি। আমি আমার প্রশ্নে %Hবলেছি যে আমার যা প্রয়োজন তা করে না।
ভ্লাদিমির পানতেলিভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.