nginx $schemeএর log_formatলাইনে পরিবর্তনশীল ব্যবহারযোগ্য has
%H অনুরোধ প্রোটোকল (যেমন "HTTP / 1.1")।
আমি কীভাবে আপাচে একই কাজ করতে পারি?
nginx $schemeএর log_formatলাইনে পরিবর্তনশীল ব্যবহারযোগ্য has
%H অনুরোধ প্রোটোকল (যেমন "HTTP / 1.1")।
আমি কীভাবে আপাচে একই কাজ করতে পারি?
উত্তর:
এটি করার একটি উপায় হ'ল দুটি শর্তসাপেক্ষ 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://..."
SetEnvIfলাইনটি অ্যাপাচি <2.4.1-তে কাজ করে না কারণ mod_setenvifস্পষ্টতই এসএসএল পরিবেশে অ্যাক্সেস নেই । প্রায় আমাকে ২.২.২২-তে পাগল করে দিয়েছে।
mod_sslআপনি যদি পরিবেশের পরিবর্তনশীল সেট করেন তবে আপনি যদি এটির মাধ্যমে এটি করতে স্পষ্টভাবে বলেন SSLOptions।
কোনও কারণে আমি উপরের উদাহরণগুলি কাজ করতে পারি না, সুতরাং অন্য একটি উপায় খুঁজে পেয়েছি: আপনি আপনার কনফিগারেশনে 2 টি পুনর্লিখনের নিয়মগুলি নীচে যুক্ত করতে পারেন:
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [E=SCHEME:HTTP]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [E=SCHEME:HTTPS]
তারপরে এটি আপনার লগফর্ম্যাট সংজ্ঞাতে যুক্ত করুন।
scheme=\"%{SCHEME}e\"
ইউআরএল স্কিমটি অ্যাপাচি লগ ফর্ম্যাটে সরাসরি উপলভ্য না হওয়ায় আপনি বিকল্প হিসাবে% p ব্যবহার করে অনুরোধটি পরিবেশন করা সার্ভারের ক্যানোনিকাল পোর্টটি (যেমন 80/443) লগ করতে পারেন:
CustomLog access.log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" port:%p"
এটি অ্যাপাচি ২.৪.২৩ এর সাথে আমার জন্য কাজ করে:
LogFormat "%{REQUEST_SCHEME}x ..." my_log_format
%{varname}xমোড_এসএসএল লোড হলে কেবল উপলভ্য থাকে, দেখুন: https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#logformats
আপনার লগ আউটপুট সংজ্ঞায়িত করুন এবং এটিতে% H যুক্ত করুন। এটি আপাচি-র ক্ষেত্রে একই রকম।
সুতরাং, আপনি LogFormatএটির মতো একটি নির্মাণ করেন এবং আফিক সেখানে ডিফল্ট অ্যাপাচি কনফিগারেশনে সংজ্ঞায়িত একটি দম্পতি রয়েছে।
LogFormat "%h %l %u %t \"%r\" %>s %b" common
এবং লগফর্ম্যাটটির নাম যুক্ত করুন (এই ক্ষেত্রে "সাধারণ") আপনার লগফিল কলটির শেষে
CustomLog logs/access_log common
শুধু এখানে বিষয়ে আরও তথ্য জন্য চেহারা লগ এবং এখানে আলাদা ফর্ম্যাট স্ট্রিং সম্পর্কে।
%Hবলেছি যে আমার যা প্রয়োজন তা করে না।
mod_envকারণে আপনার প্রচেষ্টা ব্যর্থ হতে পারে । একটি সমান চিহ্ন ছাড়া তার পরিবর্তনশীল এবং মান লাগে: ।SetEnvSetEnv URL_SCHEME http