nginx- ข้อผิดพลาดของเซิร์ฟเวอร์เริ่มต้นที่ซ้ำกัน


107

ในบันทึกข้อผิดพลาดของฉันฉันได้รับ

[Emerg] 10619 # 0: เซิร์ฟเวอร์เริ่มต้นที่ซ้ำกันสำหรับ 0.0.0.0:80 ใน /etc/nginx/sites-enabled/mysite.com:4

ในบรรทัดที่ 4 ฉันมี:

server_name mysite.com   www.mysite.com;

ข้อเสนอแนะใด ๆ ?


4
โพสต์การกำหนดค่าทั้งหมดของคุณ แต่ละคนserver {}ควรมีlistenคำสั่งของตัวเอง
Marki555

หากคุณกำลังแก้ไขบางอย่างในไซต์ที่เปิดใช้งานและการเชื่อมต่อปิดโดยไม่คาดคิดคุณอาจจบลงด้วยไฟล์บันทึกอัตโนมัติที่นั่นจากโปรแกรมแก้ไขข้อความดังนั้นคุณจะจบลงด้วยการกำหนดค่าที่ซ้ำกันเกือบทั้งหมดเพียงแค่ลบไฟล์นั้น (สำหรับไฟล์นาโนบันทึก)
LuisF

คำตอบ:


202

คุณน่าจะมีไฟล์อื่น ๆ (เช่นการdefaultกำหนดค่า) อยู่ในไฟล์/etc/nginx/sites-enabledที่ต้องลบออก

ปัญหานี้เกิดจากการทำซ้ำของdefault_serverพารามิเตอร์ที่ให้มากับlistenคำสั่งอย่างน้อยหนึ่งคำสั่งในไฟล์ของคุณ คุณอาจพบว่าคำสั่งที่ขัดแย้งกันนี้อ่านสิ่งที่คล้ายกับ:

listen 80 default_server;

ตามเอกสารประกอบโมดูลหลักของ nginx สำหรับlistenสถานะ:

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

ซึ่งหมายความว่าจะต้องมีไฟล์หรือserverบล็อกอื่นที่กำหนดไว้ในคอนฟิกูเรชันของคุณโดยdefault_serverกำหนดไว้สำหรับพอร์ต 80 nginx พบสิ่งนั้นก่อนmysite.comไฟล์ของคุณดังนั้นให้ลองลบหรือปรับการกำหนดค่าอื่น ๆ นั้น

หากคุณกำลังดิ้นรนเพื่อหาตำแหน่งที่กำหนดคำสั่งและพารามิเตอร์เหล่านี้ให้ลองค้นหาดังนี้:

grep -R default_server /etc/nginx

ขอบคุณ. มันช่วยได้จริงๆ
Koushik Das

31
เพื่อให้ชัดเจนว่าเป็นdefault_serverคำหลักที่สามารถปรากฏในการกำหนดค่าเดียวเท่านั้น - คุณสามารถกำหนดหลายไซต์ด้วยlisten 80;
Eborbob

1
ขอบคุณคุณช่วยฉัน ในกรณีของฉันฉันพบเอกสารเผยแพร่ใน /etc/nginx/sites-enabled/default.save
Andrew Grow

1
นอกเหนือจากความคิดเห็นของ @Eborbob default_serverพารามิเตอร์สามารถปรากฏได้เพียงครั้งเดียวสำหรับแต่ละaddress:portคู่ ซึ่งหมายความว่าเป็นไปได้ (และทั่วไป) ที่จะdefault_serverนำเสนอหลายครั้งในการกำหนดค่า nginx โดยรวม แต่ใช้กับ IP / พอร์ตที่แตกต่างกัน
davidjb

2
คำสั่ง grep เป็นเพียงตั๋ว มันเป็นสิ่งที่ง่ายขอบคุณ
FireDragon

6

ระบบปฏิบัติการ Debian 10 + nginx ในกรณีของฉันฉันยกเลิกการเชื่อมโยงหน้า "เริ่มต้น" เป็น:

  1. cd / etc / nginx / sites-enabled
  2. ยกเลิกการลิงก์เริ่มต้น
  3. บริการ nginx เริ่มต้นใหม่


4

หากคุณอยู่ใน Digital Ocean หมายความว่าคุณต้องไปที่ / etc / nginx / sites-enabled / จากนั้น REMOVE โดยใช้ rm -R digitalocean และค่าเริ่มต้น

มันแก้ไขให้ฉัน!

Pic of Console บน Windows 10 โดยใช้ Bitvise


นี่เป็นคำตอบง่ายๆที่เหมาะกับฉัน ฉันต้องไปที่ / etc / nginx / sites-enable / rm -R previousServerFolderNameแล้วsudo service nginx restartทำการsystemctl status nginxแสดง "active (running)"
Roly Poly
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.