เหตุใดกระบวนการ nginx จึงทำงานโดยไม่มีผู้ใช้


16

ฉันพยายามเซ็ตอัพ nginx ให้รันด้วยหนึ่งในแอพพลิเคชั่นทางรถไฟของฉันเมื่อดูผลลัพธ์ps -e | grep nginxแล้วฉันก็รู้ว่ากระบวนการของคนงาน nginx ทำงานโดยไม่มีผู้ใช้

มีเหตุผลทำไมพวกเขาไม่ทำงานเป็นข้อมูล www?


1
ดูเหมือนคำถามที่สมเหตุสมผลซึ่งนำไปสู่คำตอบที่ให้ข้อมูล - ทำไมผู้ถามถึงกำหนดประเด็น
ไม่ใช่ patch

คำตอบ:


25

มีเหตุผลทำไมพวกเขาไม่ทำงานเป็นข้อมูล www?

ใช่. คุณมักไม่ได้ระบุผู้ใช้ของคุณ Nginx การตั้งค่า

คำสั่งของผู้ใช้: http://nginx.org/en/docs/ngx_core_module.html#user

syntax: user user [group];
default:    
user nobody nobody;
context:    main

วิธีการเรียกใช้ nginx ในฐานะผู้ใช้เฉพาะ?

คุณสามารถระบุผู้ใช้ / กลุ่มที่ nginx ทำงานเป็นในการกำหนดค่า nginx

นี่คือตัวอย่างของการกำหนดค่า nginx ที่อาจมีลักษณะ (สังเกตคำสั่งของผู้ใช้):

pid                 /path/to/nginx.pid;
user                www-data www-data;
worker_processes    1;

events {
   worker_connections  1024; # usually 1024 is a good default
}

http {
   # more code goes here
}

เพียงอัปเดตการกำหนดค่าของคุณแล้วโหลดใหม่หรือรีสตาร์ท nginx และคุณน่าจะไปได้ดี

แน่นอนคุณควรเลือกผู้ใช้ที่ทำงานได้ดีที่สุดสำหรับระบบของคุณใน Debian / Ubuntu จะมี www-data เป็นค่าเริ่มต้นดังนั้นจึงเป็นตัวเลือกที่สมเหตุสมผล


www-data คือความเข้าใจของฉันมากกว่าเจ้าของ / กลุ่ม / var / www และไม่ควรใช้ผู้ใช้เดียวกันสำหรับกระบวนการ nginx ( stackoverflow.com/questions/22336186/… ) การติดตั้งใหม่ของ nginx ผ่าน apt บนเดเบียนใช้ผู้ใช้ nginx บางทีคุณอาจต้องการเปลี่ยนตัวอย่างการใช้ผู้ใช้ nginx
binaryanomaly

4

กระบวนการหลักที่มีการทำงานเป็นรากแล้วจะ Nginx setuid()/ setgid()เพื่อ/USER GROUPหากGROUPไม่ได้ระบุแล้ว Nginx USERใช้ชื่อเดียวกับชื่อ

โดยค่าเริ่มต้นคือnobodyผู้ใช้และnobodyหรือกลุ่ม nogroup หรือ--user=USERและ--group=GROUPจาก./configureสคริปต์

คุณสามารถแก้ไข nginx.conf และ set user to www www;

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.