2012-03-04 5 views
15

में लिख नहीं सकता है जब nginx प्रारंभ होता है, यह 0 आकार के साथ लॉग फ़ाइल "access.log" बनाता है। लेकिन इसमें कोई लॉग लिखा नहीं गया है। error.log ठीक काम करता है।Nginx access.log

nginx.conf:

http { 
    access_log /usr/local/webserver/nginx/logs/access.log combined; 
    .... 
} 

लॉग फ़ाइल है:

-rw-r--r-- 1 root root 0 Mar 4 00:54 access.log 
-rw-r--r-- 1 root root 3903 Mar 4 00:54 error.log 

मैं पूरी तरह उलझन में हूँ। @ _ @

क्या यह अनुमति समस्या है?

हालांकि, सर्वर {} अनुभाग में, nginx.conf के बाद के हिस्से में, access_log काम करता है! Http {} अनुभाग क्यों काम नहीं कर रहा है?

उत्तर

0

आपको उपयोगकर्ता और समूह nginx को अपनी लॉग-फाइलों में बांधना होगा।

chown nginx:nginx access.log 
chown nginx:nginx error.log 

क्या आप अपना पूरा nginx.conf पोस्ट कर सकते हैं? उदाहरण के लिए पेस्टबिन के साथ?

संपादित करें: प्रत्येक अनुभाग में आपको "संयुक्त" जैसे कीवर्ड को परिभाषित करना होगा!

+0

यह www-डेटा है: ubuntu – holms

+1

में www-डेटा तो nginx है पहले स्थान पर बनाए गए लॉग को लिखने में असमर्थ, फ़ाइलों को chmod'ing समस्या के मूल कारण से निपट नहीं है। आपको शायद nginx कॉन्फ़िगरेशन को देखने की आवश्यकता है। डिफ़ॉल्ट रूप से –

+0

@holms, हां। – sitilge

15

आपकी कॉन्फ़िगरेशन के आधार पर, nginx मास्टर प्रक्रिया और कार्यकर्ता प्रक्रियाएं अलग-अलग उपयोगकर्ताओं के रूप में चल सकती हैं।

nginx प्रक्रियाओं के लिए उपयोगकर्ताओं और समूहों देखने के लिए:

ps -eo "%U %G %a" | grep nginx 

root  root  nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 
www-data www-data nginx: worker process 

वर्कर प्रोसेस उपयोगकर्ता की जरूरतों को लॉग फ़ाइल के लिए अनुमति लिखें।

access.log की फाइल अनुमति देखने के लिए:

ls -l /var/log/nginx/access.log 
-rw-r----- 1 www-data www-data 0 Apr 29 2012 /var/log/nginx/access.log 

इस मामले में, पहुँच लॉग nginx वर्कर प्रोसेस के स्वामित्व वाले और लिखने है।

nginx http_log_module दस्तावेज़ भी देखें।

द्वितीयक समस्या के रूप में, लॉग इनोटेट डिमन द्वारा एक निश्चित आकार तक पहुंचने के बाद, nginx लॉग घुमाए जा सकते हैं। जब नई लॉग फ़ाइल बनाई जाती है, तो इसे nginx कार्यकर्ता प्रक्रिया को लिखने की अनुमति देने के लिए मालिक, समूह और अनुमतियों के साथ बनाया जाना चाहिए। nginx के लिए

इन लॉग रोटेशन सेटिंग /etc/logrotate.d/nginx

भी देखें log rotation guide for ubuntu में परिभाषित कर रहे हैं।

+1

logrotate एक डेमन नहीं है, यह एक cronjob – Sebastian

+1

अच्छा बिंदु @ सेबेस्टियन है। इस मामले में डेमॉन की परिभाषा प्राचीन ग्रीक से ली गई है: 'एक उदार या सौम्य प्रकृति भावना'। ;-) – Mark

+1

logrotate की असली प्रकृति :) @ मार्क – Sebastian

7

मुझे ऐसी ही समस्या थी जहां एक्सेस लॉग फ़ाइल को नहीं लिखा जा रहा था, लेकिन त्रुटि लॉग फ़ाइल ठीक काम कर रही थी। अनुमतियां मेरे लिए भी ठीक थीं। मैं nginx प्रक्रिया मजबूर कर ही ठीक करने के लिए

kill -USR1 `cat /var/run/nginx.pid` 

जहां /var/run/nginx.pid अपने nginx पीआईडी ​​फ़ाइल का पथ है का उपयोग कर लॉग फ़ाइलें पुनः लोड करने के समझ में आ गया

+1

उबंटू पर बस 'सुडो सेवा nginx पुनरारंभ' कर रही है, यह मेरे लिए फिर से Nginx acces.log लिखना शुरू कर दिया। (सही उपयोगकर्ता की अनुमतियों को सही करने के बाद) – program247365