ฉันใช้ nginx บนเครื่อง MacOS X ซึ่งติดตั้งด้วย brew และเมื่อฉันเปิด nginx แม้จะใช้งาน sudo ฉันก็ยังได้รับคำเตือนต่อไปนี้ในไฟล์บันทึกของฉันซ้ำแล้วซ้ำเล่า:

4/21/11 2:03:42 AM  org.nginx[3788] nginx: [warn] the "user" directive
makes sense only if the master process runs with super-user privileges,
ignored in /usr/local/etc/nginx/conf/nginx.conf:2

จากnginx.conf:

user  jschuur staff;

ฉันเปิดตัว nginx ด้วย sudo แล้ว เนื่องจากฉันต้องการให้สิ่งนั้นฟังบนพอร์ต 80 นั่นยังไม่เพียงพอที่จะให้สิทธิ์ผู้ใช้ขั้นสูงที่เหมาะสมกับมันใช่หรือไม่

ไบนารี nginx เมื่อติดตั้ง:

[email protected]:sbin → master ls -la
total 4544
drwxr-xr-x   3 jschuur  staff      102 Apr 12 20:53 .
drwxrwxr-x  15 jschuur  staff      510 Apr 12 15:25 ..
-rwxr-xr-x   1 jschuur  staff  2325648 Apr 12 20:39 nginx

FWIW ฉันคอมไพล์ไบนารีใหม่เพื่อตั้งค่าผู้โดยสารและย้ายจากตำแหน่งเดิมไปที่ /usr/local/sbin

อัปเดต : เนื่องจากปรากฏว่า MacOS X กำลังรีสตาร์ท nginx หลังจากที่ฉันหยุดทำงานแล้ว เนื่องจากรายการ Launchd plist ใน ~/Library/LaunchAgents ได้ตั้งค่าเป็น 'KeepAlive' อย่างไรก็ตาม เนื่องจากฉันติดตั้ง plist นี้ลงในโฟลเดอร์ LaunchAgents ของผู้ใช้ในเครื่อง ซึ่งต่างจาก /Library/LaunchAgents (หรือดีกว่านั้น /Library/LaunchDaemons ซึ่งทำงานก่อนที่คุณจะล็อกออน) มันจึงไม่ถูกดำเนินการในฐานะรูท เนื่องจากเกิดข้อผิดพลาดเกี่ยวกับการไม่มีสิทธิ์ในการใช้พอร์ต 80 มันจึงออกทันที แต่ยังคงเขียนไปยังล็อกไฟล์เดียวกันกับกระบวนการ nginx ที่ฉันเริ่มด้วย sudo ฉันคิดว่าข้อผิดพลาดที่เกิดจากการรีสตาร์ทอัตโนมัตินั้นมาจากการรีสตาร์ทด้วยตนเองผ่าน sudo

สรุปว่าแก้ปัญหาได้แล้ว ปัญหาจริงที่นี่คือคำแนะนำ homebrew ที่ขอให้คุณติดตั้งไฟล์ plist ในพื้นที่ที่ไม่อนุญาตให้ไซต์ในพื้นที่ใช้พอร์ต 80 โดยเฉพาะ

answer

คุณควรตรวจสอบทุกที่ที่sudo idคำสั่งแสดง uid = 0