অ্যাপাচে ইউআরএল স্কিম (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.