ค้นหาไฟล์ nginx.conf ที่ nginx ของฉันใช้จริง


131

ทำงานบนเซิร์ฟเวอร์ของไคลเอนต์ที่มีการติดตั้ง nginx สองเวอร์ชันที่แตกต่างกัน ฉันคิดว่าหนึ่งในนั้นได้รับการติดตั้งด้วยตัวจัดการแพ็คเกจการชง (มันเป็นกล่อง osx) และอีกอันดูเหมือนจะถูกรวบรวมและติดตั้งด้วย Makefile ที่บรรจุ nginx ฉันค้นหาไฟล์ nginx.conf ทั้งหมดบนเซิร์ฟเวอร์ แต่ไม่มีไฟล์ใดเลยที่กำหนดพารามิเตอร์ที่ nginx ใช้จริงเมื่อฉันเริ่มต้นบนเซิร์ฟเวอร์ ไฟล์ nginx.conf ที่ฉันไม่รู้จักอยู่ที่ไหน

คำตอบ:


247

การเรียกใช้nginx -tcommandline ของคุณจะออกการทดสอบและผนวกเอาต์พุตด้วย filepath เข้ากับไฟล์คอนฟิกูเรชัน (พร้อมข้อความแสดงข้อผิดพลาดหรือข้อความแสดงความสำเร็จ)


34

ทั้งสองอย่างnginx -tและnginx -Vจะพิมพ์พา ธ ไฟล์กำหนดค่า nginx เริ่มต้น

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ nginx -V
nginx version: nginx/1.11.1
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf ...

หากต้องการคุณสามารถรับไฟล์ config ได้โดย:

$ nginx -V 2>&1 | grep -o '\-\-conf-path=\(.*conf\)' | cut -d '=' -f2
/etc/nginx/nginx.conf

แม้ว่าคุณจะโหลดไฟล์ config อื่น ๆ มาบ้าง แต่ไฟล์เหล่านั้นก็ยังคงพิมพ์ค่าเริ่มต้นออกมา


ps aux จะแสดงไฟล์กำหนดค่า nginx ที่โหลดในปัจจุบัน

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        11  0.0  0.2  31720  2212 ?        Ss   Jul23   0:00 nginx: master process nginx -c /app/nginx.conf

เพื่อที่คุณจะได้รับไฟล์ config โดยตัวอย่าง:

$ ps aux | grep "[c]onf" | awk '{print $(NF)}'
/app/nginx.conf

33
% ps -o args -C nginx
COMMAND
build/sbin/nginx -c ../test.conf

หากรัน nginx โดยไม่มี-cตัวเลือกคุณสามารถใช้-Vตัวเลือกเพื่อค้นหาการกำหนดค่าอาร์กิวเมนต์ที่ตั้งค่าเป็นค่าที่ไม่ได้มาตรฐาน สิ่งที่น่าสนใจที่สุดสำหรับคุณ ได้แก่ :

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname

1
ฉันพยายามเรียกใช้คำสั่ง แต่มันไม่ได้ผลสำหรับฉัน ..
Anwer

7
which nginx

จะให้เส้นทางของ nginx ที่ใช้


แก้ไข (2017-Jan-18)

ขอบคุณความคิดเห็นของ Will Palmer เกี่ยวกับคำตอบนี้ฉันได้เพิ่มสิ่งต่อไปนี้ ...

หากคุณติดตั้ง nginx ผ่านตัวจัดการแพ็คเกจเช่น HomeBrew ...

which nginx

อาจไม่ให้เส้นทางที่แน่นอนไปยัง nginx ที่ใช้ อย่างไรก็ตามคุณสามารถค้นหาได้โดยใช้ไฟล์

realpath $(which nginx)

และตามที่ @Daniel Li กล่าวไว้

คุณสามารถรับการกำหนดค่าของ nginx ผ่านวิธีการของเขา

หรือคุณสามารถใช้สิ่งนี้:

nginx -V

1
"ซึ่ง" ทำงานบนระบบที่ใช้ Unix ส่วนใหญ่ ฉันเพิ่งพิมพ์ลงบน Ubuntu เพื่อให้แน่ใจว่าฉันจะไม่หลงทาง
tqwhite

1
โอ้ว้าวฉันได้รับการแก้ไขแล้ว แก้ไขคำตอบทันที ขอบคุณ
Craig Wayne

1
which nginxแสดงเฉพาะเส้นทางเริ่มต้นสำหรับ nginx สำหรับผู้ใช้ปัจจุบัน (ไม่ใช่แม้แต่ผู้ใช้ปัจจุบัน - เชลล์ปัจจุบัน) มันไม่ได้แสดงเส้นทางที่ nginx "ถูกใช้" อย่างแน่นอน
Will Palmer

2

คำตอบอื่น ๆ ทั้งหมดมีประโยชน์ แต่อาจไม่ช่วยคุณในกรณีที่nginxไม่อยู่PATHคุณจึงได้รับcommand not foundเมื่อพยายามเรียกใช้nginx :

ฉันมี nginx 1.2.1 บน Debian 7 Wheezy nginxโปรแกรมปฏิบัติการไม่ได้เปิดอยู่PATHดังนั้นฉันต้องค้นหามันก่อน มันทำงานอยู่แล้วดังนั้นเมื่อใช้ps aux | grep nginxฉันพบว่ามันอยู่บน/usr/sbin/nginxดังนั้นฉันจึงต้องเรียกใช้/usr/sbin/nginx -tวิ่ง

หากคุณต้องการใช้ไฟล์คอนฟิกูเรชันที่ไม่ใช่ค่าดีฟอลต์ (เช่น not /etc/nginx/nginx.conf) ให้รันด้วย-cพารามิเตอร์:/usr/sbin/nginx -c <path-to-configuration> -tพารามิเตอร์:

คุณอาจต้องเรียกใช้เป็นrootมิฉะนั้น nginx อาจไม่มีสิทธิ์ในการเปิดบันทึกตัวอย่างดังนั้นคำสั่งจะล้มเหลว


1

นอกจากคำตอบของ @Daniel Li แล้วการติดตั้ง nginx กับ Valet จะใช้การกำหนดค่า Velet เช่นกันซึ่งอยู่ใน "/usr/local/etc/nginx/valet/valet.conf" ไฟล์ nginx.conf จะนำเข้าไฟล์ Valet conf นี้ การตั้งค่าที่คุณต้องการอาจอยู่ในไฟล์ Valet

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