Score:0

Nginx reverse proxy เมื่อมีการใช้งานพอร์ตอยู่แล้ว?

ธง us

ฉันกำลังพยายามปิดพอร์ตด้วยการรับรองความถูกต้องขั้นพื้นฐาน (สำหรับ pushgateway ของ prometheus) ดังนั้นจึงไม่ใช่ผู้เชี่ยวชาญรายใหญ่ใน nginx ดังนั้นใครก็ได้โปรดให้คำแนะนำและคำแนะนำที่ฉันผิดพลาดได้ไหม

ฉันมีพอร์ต 9091 ซึ่งควรปิดจากภายนอกต่อหน้าการตรวจสอบสิทธิ์ พอร์ตนี้ถูกใช้งานโดย pushgateway

การกำหนดค่า nginx ปัจจุบันของฉัน:

เหตุการณ์ { }
http {
ต้นน้ำ prometheus {
      เซิร์ฟเวอร์ 127.0.0.1:9090;
      Keepalive 64;
}

ช่องทางผลักดันต้นน้ำ {
      เซิร์ฟเวอร์ 127.0.0.1:9091;
      Keepalive 64;
}

เซิร์ฟเวอร์ {
      รูท /var/www/example;
      ฟัง 0.0.0.0:80;
      ชื่อเซิร์ฟเวอร์ __;      
      ที่ตั้ง / {
            auth_basic "การรับรองความถูกต้องของเซิร์ฟเวอร์ Prometheus2";
            auth_basic_user_file /etc/nginx/.htpasswd;
            proxy_pass http://โพร;
      }  
}


เซิร์ฟเวอร์ {
      รูท /var/www/example;
      ฟัง 0.0.0.0:3001;          
      ชื่อเซิร์ฟเวอร์ __;      
      ที่ตั้ง / {
            auth_basic "การตรวจสอบเซิร์ฟเวอร์ Pushgateway";
            auth_basic_user_file /etc/nginx/.htpasswd;
            proxy_pass http://pushgateway;
      } 
}
}

ดังนั้นการตรวจสอบสิทธิ์ขั้นพื้นฐานจึงทำงานได้ดีสำหรับ :3001 แต่ 9091 ยังคงเปิดอยู่ ฉันพยายามเปลี่ยนวิธีต่อไป:

   เซิร์ฟเวอร์ {
      รูท /var/www/example;
      ฟัง 0.0.0.0:3001;
      ฟัง 0.0.0.0:9091;
      ชื่อเซิร์ฟเวอร์ __;      
      ที่ตั้ง / {
            auth_basic "การตรวจสอบเซิร์ฟเวอร์ Pushgateway";
            auth_basic_user_file /etc/nginx/.htpasswd;
            proxy_pass http://pushgateway;
      } 
}

และใช้งานได้ดี แต่ ... pushgateway ไม่สามารถเริ่มได้เนื่องจากพยายามฟัง :9091 และโยน "bind:address is already in use" ฉันจะหลีกเลี่ยงและซ่อน pushgateway ไว้หน้า nginx ได้อย่างไร

การกำหนดค่าของ Pushgatewa:

ExecStart=/usr/local/bin/pushgateway --web.listen-address=":9091" --web.telemetry-path="/metrics" --persistence.file="/tmp/metric.store" -- การคงอยู่.ช่วงเวลา=5m --log.level="info" --log.format="logger:stdout?json=true"
Score:1
ธง us

การกำหนดค่า nginx ปัจจุบันของคุณดีสำหรับจุดประสงค์นี้

คุณต้องเปลี่ยนการกำหนดค่า Pushgateway เพื่อให้รับฟังได้ 127.0.0.1 แทน 0.0.0.0.

หากคุณหาไม่พบ คุณต้องเพิ่มกฎไฟร์วอลล์ที่บล็อกการรับส่งข้อมูลไปยังพอร์ตจากฝั่ง WAN

Nigrimmist avatar
us flag
ขอบคุณสำหรับคำแนะนำ ฉันพยายามก่อน ExecStart=/usr/local/bin/pushgateway --web.listen-address="127.0.0.1:9091" --web.telemetry-path="/metrics" --persistence.file="/tmp/metric.store " --persistence.interval=5m --log.level="info" --log.format="logger:stdout?json=true" ออกเหมือนเดิม
us flag
อะไร `ss -lnpt | grep เกตเวย์ ` แสดง?
Nigrimmist avatar
us flag
มันอยู่ในบรรทัด nginx ที่แสดงความคิดเห็นพร้อมฟัง 9091 : https://i.imgur.com/nA71xlt.png พร้อมฟัง - ไม่แสดงอะไรเลยเนื่องจาก pushgateway ไม่สามารถเริ่มได้ : https://i.imgur.com/2AMCyFs.png
us flag
คุณต้องไม่มีส่วนย่อยการกำหนดค่าที่สองในคำถามของคุณ nginx ต้องไม่ฟังพอร์ตนั้น
Nigrimmist avatar
us flag
ตกลง แต่ฉันต้องทำอย่างไรเพื่อทำให้พอร์ตนี้ไม่สามารถเข้าถึงได้จากการเข้าถึงแบบสาธารณะ
us flag
ฉันได้บอกไปแล้วว่าต้องทำอย่างไร คุณใช้การกำหนดค่าส่วนแรกในคำถามของคุณเท่านั้น จากนั้นกำหนดค่า Pushgateway ให้ฟังเฉพาะ `127.0.0.1:9091` ด้วยวิธีนี้ มีเพียง Pushgateway เท่านั้นที่ฟังพอร์ต 9091 และเนื่องจากถูกผูกไว้กับ localhost จึงไม่สามารถใช้งานได้จากภายนอก
Nigrimmist avatar
us flag
ใช่... คุณพูดถูก ดูเหมือนว่าเมื่อฉันทดสอบ 127.0.0.1:9091 - ฉันไม่ได้เริ่มบริการใหม่อย่างถูกต้อง การรีบูตเครื่องทั้งโหนดแก้ไขได้ ขอบคุณมากผู้ชาย

โพสต์คำตอบ

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