ওভাররাইডিং এনজিনেক্স অ্যাক্সেস_লগ নির্দেশিকা - লগ এন্ট্রিগুলি সদৃশ করুন


17

আমি উবুন্টু 14.04 সার্ভারে ডিফল্ট nginx প্যাকেজটি ব্যবহার করছি। এটি /etc/nginx/nginx.confমূল কনফিগারেশন হিসাবে ব্যবহার করছে এবং তারপরে /etc/nginx/conf.d/*.confএবং থেকে কনফিগারগুলি অন্তর্ভুক্ত করে /etc/nginx/sites-enabled/*

অ্যাক্সেস লগটিতে লগ করার জন্য ডিফল্ট nginx কনফিগারেশনের এই নির্দেশনা রয়েছে

access_log /var/log/nginx/access.log;

আমি এক্স-ফরওয়ার্ড-ফর হেডার যুক্ত করতে চাই, তাই আমি conf.dফোল্ডারের অভ্যন্তরে এটি করব :

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

আমার সমস্যাটি হ'ল আমি তখন আমার অ্যাক্সেস.লগ ফাইলের মধ্যে দুটি রেকর্ড পাচ্ছি - একটি শিরোনামের তথ্য সহ এবং অন্যটি ছাড়া।

আমি জানি আমি nginx.confনিজে ফাইলটি ওভাররাইট করতে পারি , তবে সম্ভব হলে আমি এড়াতে চাই। আমি একই লগ ফাইল ( access.log) ব্যবহার চালিয়ে যেতে চাই ।

পূর্ববর্তী নির্দেশকে ওভাররাইড করার জন্য এবং মূল nginx.confফাইলটি পরিবর্তন না করে কেবল লগ বিন্যাস পরিবর্তন করার জন্য এনজিনেক্সকে বলার উপায় আছে কি ?


নাঃ। কেবল এটিকে nginx.conf থেকে সরিয়ে দিন
আলেক্সি দশ

1
আমি এর জন্য টিকিট খুলেছি; trac.nginx.org/nginx/ticket/1084
cweiske

উত্তর:


6

আপনার প্রশ্নের উত্তর হ'ল না, আপনি এনজিঙ্ক্সের কোনও স্তরে লগ-ফর্ম্যাটকে ওভাররাইড করতে পারবেন না এবং অ্যাক্সেস_লগটি একই স্তরে থাকা ছাড়া, আপনি এটিকে সুইচ অফ না করেই ওভাররাইড করতে পারবেন না। যাইহোক, আপনি nginx.conf পরিবর্তন না করে আপনি যা চান তা অর্জন করতে পারেন তবে আপনাকে এটি সার্ভার-লেভেলে করতে হবে।

এখানে সমস্যাটি হল যে কনফারেন্স.ডি / * অন্তর্ভুক্তটি http {inside এর মধ্যে রয়েছে যা অ্যাক্সেস_লগের নির্দেশিকা ঠিক সেখানে। আপনি nginx.conf স্পর্শ না করে যা করতে পারেন তা হ'ল আপনি যে সার্ভার ব্যবহার করছেন তা পরিবর্তন করা (আপনি যদি সেট আপ না করেন তবে আপনি / etc / nginx / সাইট-সক্ষম / ডিফল্ট অবস্থিত ডিফল্টটি ব্যবহার করছেন)। সুতরাং nginx.conf পরিবর্তন না করেই এটি অর্জনের জন্য আপনার নিজের ফাইলটি কনফ। ডি ফোল্ডারে পরিবর্তন করতে হবে: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log off;

এবং তারপরে আপনার সার্ভারের ভিতরে}} রাখুন: access_log /var/log/nginx/access.log main;

এটি শুরুতে আপনি যা চেয়েছিলেন তা পাওয়া উচিত।


ধন্যবাদ, এটি দুর্দান্ত কাজ করে। সাধারণত ইতিমধ্যে একটি mainলগ_ফর্ম্যাট রয়েছে তবে আপনি যাতে অন্য একটি নাম চয়ন করতে পারেন।
কুট্টি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.