แทนที่การกำหนดค่า http เริ่มต้น nginx โดยไม่เปลี่ยนค่าเริ่มต้น nginx.conf


14

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

สิ่งที่ฉันทำ : ฉันสร้างการกำหนดค่าแบบกำหนดเองใน/etc/nginx/conf.d/แบบเดียวกับที่ฉันทำกับบริการเดเบียนอื่น ๆ

ปัญหา : อย่างไรก็ตามดูเหมือนว่าเป็นไปไม่ได้ที่จะแทนที่การกำหนดค่าบางอย่างเพราะฉันได้รับคำสั่ง "X" เป็นข้อผิดพลาดซ้ำซ้อน ดูเหมือนว่า Nginx จะไม่สนับสนุนการกำหนดค่าแทนที่เช่นเดียวกับบริการอื่น ๆ

คำถาม : มีวิธีการแทนที่และเพิ่มตัวเลือกใหม่ให้กับบริบทhttp nginx โดยไม่ได้รับคำสั่งเป็นข้อผิดพลาดซ้ำกันหรือไม่ หรือฉันควรละทิ้งความคิดและอาละวาดอย่างสมบูรณ์nginx.confหรือไม่

ขอบคุณมากสำหรับความช่วยเหลือของคุณ.

คำถามที่คล้ายกันนี้ไม่ได้แก้ปัญหาของฉันเพราะฉันต้องการกำไรจากตัวเลือกเริ่มต้นที่ nginx ตั้งค่าให้ฉันโดยอัตโนมัติ (เช่นworker_processes auto;)


1
คุณพร้อมที่จะใช้ Debian จริงๆหรือ? การกำหนดค่า nginx ของพวกเขาค่อนข้างแตกต่างจากอัปสตรีมและอาจเป็นไปไม่ได้
Michael Hampton

ใช่. ฉันมีเซิร์ฟเวอร์ที่ใช้งานจริงจำนวนมากที่ทำงานบน Debian อยู่แล้วและนี่เป็นเรื่องเกี่ยวกับการเปลี่ยน apache2 เป็น nginx เท่านั้น ดังนั้นสิ่งที่คุณกำลังบอกฉันคือในการกระจายอื่น ๆ สิ่งที่ฉันพยายามอาจทำงานได้อย่างไร มีโอกาสที่จะทำงานกับเดเบียนในอนาคตหรือไม่
Gui-Don

แน่นอนว่าเป็นไปได้ว่าเดเบียนจะส่งมอบการกำหนดค่า nginx ที่สมเหตุสมผลมากขึ้นในอนาคต คุณสามารถสร้างของคุณเองได้เช่นกัน
Michael Hampton

คำตอบ:


2

หรือฉันควรละทิ้งความคิดและทำให้ nginx.conf สมบูรณ์หรือไม่

ใช่คุณควรจะ.

การเปลี่ยนแปลงเพียงอย่างเดียวที่ทำโดยผู้ดูแลแพ็คเกจ

  • ค่าเริ่มต้นที่สมเหตุสมผลมากขึ้นสำหรับพารามิเตอร์คุณควรตั้งค่าตัวเองเป็นเวลานานแล้ว
  • #ตัวอย่างที่แก้ไขแล้วซึ่งจะไม่ใช้หากไม่มีการกระทำของคุณ

ในอดีตที่ผ่านมามีเพียงการเปลี่ยนแปลงอย่างมีนัยสำคัญssl_protocols, และssl_prefer_server_ciphers worker_processesคุณน่าจะเอาชนะคนเหล่านั้นได้หลายปีก่อนที่จะตั้งค่าในแพ็คเกจ deb ดูเหมือนจะเป็นสิ่งที่สมเหตุสมผลสำหรับผู้ดูแลแพคเกจ

ในอดีตการลดจริงเพียงอย่างเดียวที่สามารถส่งมาพร้อมกับระบบ nginx.conf การเพิ่มmax_ranges 1;สำหรับ CVE-2017-7529 ไม่ได้ถูกส่งโดยการกระจายใด ๆ ที่ฉันรู้พวกเขาปล่อยการแก้ไขสำหรับช่องโหว่ก่อนผู้ดูแลระบบส่วนใหญ่ นำไปใช้บรรเทาผลกระทบ

คุณไม่สามารถคาดหวังได้ว่าผู้ดูแลแพคเกจจะเร็วกว่าที่คุณกำลังเพิ่มการเปลี่ยนแปลงที่อาจทำลายดังนั้นคุณอาจไม่ได้กำไรจากการสืบทอดการกำหนดค่าของพวกเขา ผู้ดูแลแพคเกจไม่สามารถรู้ได้ว่าอะไรคือสิ่งที่ดีที่สุดสำหรับกรณีการใช้งานหลายล้านกรณีและจะมีการเปลี่ยนแปลงอย่างมากในกรณีนี้

ตราบใดที่ระบบสำรองข้อมูลของคุณทำงานอย่างถูกต้องน่าจะเป็นความคิดที่ดีที่จะคงการตั้งค่าไว้ดังนั้น apt จะถามคุณระหว่างการอัพเดตแบบอินเทอร์แอคทีฟ


คุณจะทราบได้อย่างไรว่ามีการเปลี่ยนแปลงอะไรบ้างระหว่างการเปิดตัวที่แตกต่างกัน คุณสามารถเปรียบเทียบรุ่นแพคเกจทั้งหมด (ไม่ได้ตรวจสอบและไม่ปลอดภัย) ที่มีอยู่เช่นนี้:

(cd "$(mktemp -d)"; rmadison --url=debian nginx-common | awk '{print $3}' | while read a; do curl "http://ftp.debian.org/debian/pool/main/n/nginx/nginx-common_${a}_all.deb" | dpkg -x - x${a}; done; for a in x*/etc/nginx/nginx.conf; do [ -z "$la" ] && la="$a" && continue; diff -wus "$la" "$a";la="$a" ; done; pwd)

ประวัติศาสตร์นำข้อมูลที่มีค่ามาใช้ในกรณีนี้ดังนั้นขอขอบคุณสำหรับคำตอบที่ดีมาก ฉันเข้าใจประเด็นของคุณเมื่อพิจารณาถึงความสำคัญของ nginx ทั่วโลกมันเป็นไปไม่ได้สูงมากที่การเปลี่ยนแปลงที่สำคัญจะเกิดขึ้นในช่วงชีวิตของเซิร์ฟเวอร์ HTTP ของฉัน
Gui-Don

1
ฉันไม่เห็นด้วยกับสิ่งนี้ ในขณะที่ไม่น่าเป็นไปได้ที่ปัญหาจะเกิดขึ้นเนื่องจากการเปลี่ยนแปลงของผู้ดูแลระบบการกำหนดค่าแยกต่างหากจะช่วยลดค่าใช้จ่ายในการบำรุงรักษารวมถึงมีโครงสร้างที่ดีขึ้นและโยกย้ายไปยังเซิร์ฟเวอร์อื่นได้ง่ายขึ้น
xZero

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