Score:0

Nginx ไม่ฟังพอร์ตใหม่ด้วย systemctl โหลด nginx ใหม่หลังจากเพิ่มการกำหนดค่าด้วยพอร์ตใหม่

ธง vn

ไม่แน่ใจว่าจะสรุปประเด็นนี้อย่างรวดเร็วได้อย่างไร ดังนั้นฉันจะอธิบายสถานการณ์ของฉันในหัวข้อย่อย:

  • การติดตั้ง nginx พื้นฐานปกติ
  • ฉันใช้เพียง https(443) ดังนั้นฉันจึงลบการกำหนดค่า http(80) ทั้งหมด
  • เมื่อคุณเริ่ม nginx (หรือ เริ่มต้นใหม่ มัน) ดูเหมือนว่ากระบวนการจะฟังที่พอร์ต 80 เช่นกัน (เอสเอส -tulp)
  • เมื่อฉันเพิ่มการกำหนดค่าใน /etc/nginx/sites-enabled กับผู้ฟังใน http(80) แล้ว;
  • โหลด nginx ใหม่โดยใช้ systemctl โหลด nginx (หมายเหตุ: โหลดซ้ำ ไม่รีสตาร์ท)
  • ใช้งานไม่ได้ ราวกับว่า nginx ยังไม่รับฟังการรับส่งข้อมูลบนพอร์ต 80
  • ถ้าฉันวิ่ง systemctl รีสตาร์ท nginx มันใช้งานได้

ฉันสังเกตเห็นสิ่งนี้ เนื่องจาก LetsEncrypt ไม่สามารถต่ออายุใบรับรองของฉันได้ หลังจากตรวจสอบปัญหาแล้ว ฉันสังเกตเห็นลักษณะการทำงานที่อธิบายไว้ข้างต้น
เนื่องจากฉันไม่มีการกำหนดค่า nginx ฟังบน http(80) ฉันคิดว่า nginx ไม่ได้เพิ่มผู้ฟังหรือบางอย่างเมื่อฉันเริ่ม nginx (แม้ว่าพอร์ต 80 จะถูกอ้างสิทธิ์โดย nginx)
และถ้า Certbot พยายามต่ออายุใบรับรองของฉัน มันจะเพิ่มการกำหนดค่า http(80) ชั่วคราวในไดเร็กทอรีการกำหนดค่า nginx ซึ่งน่าจะตามด้วยการ "โหลดซ้ำ" ของ nginx แทนที่จะรีสตาร์ท (ซึ่งเป็นไปตามที่คาดไว้และตามที่ควร)
แต่เนื่องจาก nginx เป็น เริ่ม หากไม่มีการกำหนดค่า http(80) ก็จะไม่ประมวลผลการรับส่งข้อมูลจาก LetsEncrypt ไปยังการกำหนดค่าความท้าทายชั่วคราวนั้น
วิธีแก้ไขของฉันค่อนข้างง่าย โดยเพิ่มบล็อกการกำหนดค่า http(80) พื้นฐานให้กับ nginx โดยมีเพียง a กลับ 404; และ รีสตาร์ท จิงซ์ หลังจากนั้น Certbot ก็ทำงานได้ดีและสามารถต่ออายุใบรับรองทั้งหมดของฉันได้

ฉันสงสัยว่านี่เป็นพฤติกรรมที่คาดหวังหรือว่านี่เป็นข้อบกพร่อง (ที่ทราบ) ใน Nginx

ขอบคุณ

อัปเดต:

รุ่น nginx: nginx/1.18.0
เดเบียน 11 (เป้า)
cn flag
คุณต้องแชร์การกำหนดค่าจริงของคุณเพื่อให้เราช่วยเหลือได้
Jesse avatar
vn flag
@ shearn89 ไม่แน่ใจว่าการกำหนดค่าของฉันจะช่วยได้อย่างไร เนื่องจากการกำหนดค่าเองนั้นดูไม่เกี่ยวข้อง การไม่มีการกำหนดค่าที่ดูเหมือนจะทำให้เกิดปัญหา หากฉันไม่มีการกำหนดค่าที่ฟังบนพอร์ต 80 และถ้าฉันเพิ่มการกำหนดค่าสำหรับพอร์ต 80 (ไม่สำคัญว่าการกำหนดค่าใด) การโหลดซ้ำของบริการจะไม่เกิดข้อผิดพลาด แต่ก็ไม่ฟังบนพอร์ต 80. ฉันต้องเริ่มบริการใหม่ ก่อนที่การกำหนดค่าจะทำงาน ในขณะที่ปกติแล้วการโหลดซ้ำก็เพียงพอแล้ว
cn flag
คุณบอกว่าคุณ 'ลบ http(80) config ทั้งหมด' แล้ว 'เพิ่ม config ใน ...' การพยายามเดาว่าการกำหนดค่าของคุณเป็นอย่างไรจากคำอธิบายนั้นเป็นเรื่องยากและเกิดข้อผิดพลาดได้ง่าย หากคุณเพิ่มเข้าไปในคำถาม เราสามารถแจ้งให้คุณทราบได้ว่าเป็นข้อผิดพลาดในการกำหนดค่าข้อผิดพลาดใน Nginx หรือไม่
Jesse avatar
vn flag
ปัญหาคือมันไม่ทำงานตามที่คาดไว้เมื่อฉันไม่ได้ให้การกำหนดค่านั้น ด้วยการกำหนดค่านั้นใช้งานได้ดังนั้นอีกครั้งไม่แน่ใจว่าการกำหนดค่าจะช่วยได้อย่างไร แต่อย่างที่ฉันระบุไว้ในโพสต์ต้นฉบับ config ของฉันเป็นเพียง return 404; ฟัง 80; ชื่อเซิร์ฟเวอร์ _; กลับ 404;
Score:0
ธง cn

ฉันไม่คิดว่านี่เป็นข้อบกพร่อง ฉันคิดว่านี่เป็นสิ่งที่ไม่ถูกต้องในตอนท้ายของคุณ ฉันไม่สามารถสร้างปัญหาของคุณขึ้นมาใหม่ได้

ฉันได้สร้างอินสแตนซ์ EC2 ใหม่ด้วย Amazon Linux และติดตั้ง nginx แล้ว

แสดงความคิดเห็นในเซิร์ฟเวอร์ http, https ที่ไม่ได้แสดงความคิดเห็น และใบรับรองที่สร้างขึ้น:

# เซิร์ฟเวอร์ {
# ฟัง 80;
# ฟัง [::]:80;
#        ชื่อเซิร์ฟเวอร์  _;
# ราก /usr/share/nginx/html;
#
# # โหลดไฟล์การกำหนดค่าสำหรับบล็อกเซิร์ฟเวอร์เริ่มต้น
# รวม /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# สถานที่ = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# สถานที่ = /50x.html {
# }
# }

    เซิร์ฟเวอร์ {
        ฟัง 443 ssl http2;
        ฟัง [::]:443 ssl http2;
        ชื่อเซิร์ฟเวอร์  _;
        รูท /usr/share/nginx/html;

        ssl_certificate "/etc/pki/nginx/cert.pem";
        ssl_certificate_key "/etc/pki/nginx/key.pem";
        ssl_session_cache ที่แชร์:SSL:1m;
        ssl_session_timeout 10m;
        # ssl_ciphers โปรไฟล์ = ระบบ;
        # ssl_prefer_server_ciphers บน;

        # โหลดไฟล์การกำหนดค่าสำหรับบล็อกเซิร์ฟเวอร์เริ่มต้น
        รวม /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
            ตำแหน่ง = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            ตำแหน่ง = /50x.html {
        }
    }

ใบรับรอง:

[root@ip-10-0-0-110 nginx]# ls -l /etc/pki/nginx/
รวม 8
-rw-r--r-- 1 nginx nginx 2155 4 ก.พ. 09:28 น. cert.pem
-rw-r--r-- 1 nginx nginx 3272 4 ก.พ. 09:28 น. key.pem

เริ่มต้นเซิร์ฟเวอร์และพอร์ต 80 ไม่ได้ใช้งาน แต่ 443 คือ:

[รูท@ip-10-0-0-110 nginx]# ss -plunt | เกรป ':80'
[รูท@ip-10-0-0-110 nginx]# ss -plunt | เกรป ':443'
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* ผู้ใช้:(("nginx",pid=32264,fd=6),("nginx",pid=32262,fd=6),("nginx", pid=32205,fd=6))
tcp LISTEN 0 511 [::]:443 [::]:* ผู้ใช้:(("nginx",pid=32264,fd=7),("nginx",pid=32262,fd=7),("nginx ",pid=32205,fd=7))

ยกเลิกการแสดงความคิดเห็น HTTP และทำ systemctl โหลด nginxและทั้งสองใช้อยู่:

[root@ip-10-0-0-110 nginx]# เป็นกลุ่ม /etc/nginx/nginx.conf
[root@ip-10-0-0-110 nginx]# systemctl โหลด nginx ใหม่
[รูท@ip-10-0-0-110 nginx]# ss -plunt | เกรป ':443'
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* ผู้ใช้:(("nginx",pid=32288,fd=6),("nginx",pid=32287,fd=6),("nginx", pid=32205,fd=6))
tcp LISTEN 0 511 [::]:443 [::]:* ผู้ใช้:(("nginx",pid=32288,fd=7),("nginx",pid=32287,fd=7),("nginx ",pid=32205,fd=7))
[รูท@ip-10-0-0-110 nginx]# ss -plunt | เกรป ':80'
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* ผู้ใช้:(("nginx",pid=32288,fd=13),("nginx",pid=32287,fd=13),("nginx", pid=32205,fd=13))
tcp LISTEN 0 511 [::]:80 [::]:* ผู้ใช้:(("nginx",pid=32288,fd=14),("nginx",pid=32287,fd=14),("nginx ",pid=32205,fd=14))
[รูท@ip-10-0-0-110 nginx]#

แสดงความคิดเห็นและโหลดอีกครั้งมีเพียง 443 เท่านั้นที่ฟังอยู่

เวอร์ชันที่ติดตั้ง:

[root@ip-10-0-0-110 nginx]# รายการยำ nginx
ปลั๊กอินที่โหลดแล้ว: extras_suggestions, langpacks, ลำดับความสำคัญ, update-motd
แพ็คเกจที่ติดตั้ง
nginx.x86_64 1:1.20.0-2.amzn2.0.4
Jesse avatar
vn flag
อ้อ ลืมพูดถึงเวอร์ชั่นของฉัน: "nginx version: nginx/1.18.0" บน Debian 11 จะตรวจสอบว่าฉันสามารถสร้างซ้ำในการติดตั้งใหม่ได้หรือไม่ อาจจะแก้ไขได้ใน 1.20

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา