ฉันกำลังใช้บริการบนคอนเทนเนอร์นักเทียบท่า
บริการถูกเปิดเผยบนพอร์ตที่กำหนด (เช่น 12345)
ยิ่งไปกว่านั้น ฉันได้เพิ่ม nginx reverse proxy เพื่อรับฟังก์ชันเพิ่มเติม เช่น HTTPS และ HTTP/2
การกำหนดค่า nginx มีดังต่อไปนี้:
worker_processes อัตโนมัติ
http {
ส่งไฟล์บน;
เปิด gzip;
เซิร์ฟเวอร์ {
ฟัง 443 ssl http2;
ฟัง [::]:443 ssl ipv6only=on http2;
server_name example.com
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
ที่ตั้ง / {
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header โฮสต์ $host;
proxy_pass http://localhost:12345/;
ปิด proxy_buffering;
proxy_http_version 1.1;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ "อัพเกรด";
}
}
}
หากไม่มีไฟร์วอลล์จะทำงานได้อย่างถูกต้อง (ฉันสามารถเข้าถึงบริการบน LAN ได้ทั้งที่พอร์ต 443 และพอร์ต 12345)
ฉันมีไฟร์วอลล์พร้อมแบ็กเอนด์ nftables ที่กำหนดค่าดังต่อไปนี้:
นักเทียบท่า (ใช้งานอยู่)
เป้าหมาย: ยอมรับ
icmp-block-inversion: ไม่
อินเทอร์เฟซ: br-06ceff0ffa49 docker0
แหล่งที่มา:
บริการ:
พอร์ต: 12345/tcp 12345/udp
โปรโตคอล:
ไปข้างหน้า: ใช่
สวมหน้ากาก: ไม่
พอร์ตไปข้างหน้า:
พอร์ตต้นทาง:
icmp บล็อก:
กฎมากมาย:
สาธารณะ (ใช้งานอยู่)
เป้าหมาย: ค่าเริ่มต้น
icmp-block-inversion: ไม่
อินเทอร์เฟซ: eth0 wlan0
แหล่งที่มา:
บริการ: http https ssh
พอร์ต: 12345/tcp
โปรโตคอล:
ไปข้างหน้า: ใช่
สวมหน้ากาก: ไม่
พอร์ตไปข้างหน้า:
พอร์ตต้นทาง:
icmp บล็อก:
กฎมากมาย:
เชื่อถือได้ (ใช้งานอยู่)
เป้าหมาย: ยอมรับ
icmp-block-inversion: ไม่
อินเทอร์เฟซ: lo
แหล่งที่มา:
บริการ:
พอร์ต: 12345/tcp
โปรโตคอล:
ไปข้างหน้า: ใช่
สวมหน้ากาก: ไม่
พอร์ตไปข้างหน้า:
พอร์ตต้นทาง:
icmp บล็อก:
กฎมากมาย:
เมื่อฉันพยายามเข้าถึงบริการจากพีซีบน LAN ด้วยการกำหนดค่านี้ ฉันสามารถเข้าถึงได้โดยตรงผ่านพอร์ต 12345 แต่ถ้าฉันพยายามเข้าถึงผ่าน nginx ฉันจะหมดเวลา
ความรู้สึกของฉันคือไฟร์วอลล์ป้องกัน nginx จากการแลกเปลี่ยนข้อมูลกับคอนเทนเนอร์ แต่ฉันไม่รู้ว่าฉันขาดอะไรไปเพื่อให้มันทำงานได้
ฉันอาจพลาดอะไรไป