ดังนั้นพยายามตั้งค่า Nginx เป็นพร็อกซีย้อนกลับโดยใช้นักเทียบท่า - ฉันมีคอนเทนเนอร์โหนด js สามรายการ (หนึ่งส่วนหน้าและบริการส่วนหลังสองส่วน) บริการส่วนหน้าเรียกใช้บริการส่วนหลังสองส่วน ดังนั้นฉันต้องการให้ nginx เปลี่ยนเส้นทางไปยังส่วนหน้า (ซึ่งเป็นเว็บแอปพลิเคชัน) แต่ทุกครั้งที่ฉันพยายามส่งบางอย่าง ฉันได้รับข้อผิดพลาด 502 เกตเวย์ที่ไม่ถูกต้อง เมื่อฉันเรียกใช้โดยตรงไปยังคอนเทนเนอร์นักเทียบท่า ฉันสามารถ ping คอนเทนเนอร์อื่นผ่าน dns_hostname หรือที่อยู่ IP (ซึ่งฉันคว้าจากการตรวจสอบนักเทียบท่า) นี่คือเวอร์ชันที่แก้ไขของทั้งนักเทียบท่าและนักแต่งเพลงและ nginx.conf ของฉัน
รุ่น: "3.8"
บริการ:
ส่วนหน้า:
รูป: ส่วนหน้า
ชื่อโฮสต์: ส่วนหน้า
env_file:
/.env
เครือข่าย:
- เครือข่าย
รีสตาร์ท: เมื่อล้มเหลว
เปิดเผย:
- "3000"
container_name: ส่วนหน้า
แบ็กเอนด์บริการ-01:
รูปภาพ: แบ็กเอนด์-บริการ-01
ชื่อโฮสต์: แบ็กเอนด์-บริการ-01
env_file:
./backend-service-01/.env
เครือข่าย:
- เครือข่าย
รีสตาร์ท: เมื่อล้มเหลว
container_name: แบ็กเอนด์-บริการ-01
แบ็กเอนด์บริการ-02:
รูปภาพ: แบ็กเอนด์-บริการ-02
ชื่อโฮสต์: แบ็กเอนด์-บริการ-02
env_file:
./backend-service-02/.env
เครือข่าย:
- เครือข่าย
รีสตาร์ท: เมื่อล้มเหลว
container_name: แบ็กเอนด์-บริการ-02
พร็อกซี nginx:
รูปภาพ: nginx:stable-alpine
ชื่อโฮสต์: nginx-proxy
เครือข่าย:
- เครือข่าย
รีสตาร์ท: เมื่อล้มเหลว
ปริมาณ:
- /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /data/nginx/certs/crt_file.crt:/etc/nginx/crt_file.crt
- /data/nginx/certs/priv_key.key:/etc/nginx/priv_key.key:ro
พอร์ต:
- 80:80
- 443:443
container_name: nginx-พร็อกซี
ขึ้นอยู่กับ:
- ส่วนหน้า
- แบ็กเอนด์บริการ-01
- แบ็กเอนด์-บริการ-02
เครือข่าย:
เครือข่าย:
และนี่คือไฟล์ nginx conf ที่ฉันใช้:
worker_processes อัตโนมัติ
pid /run/nginx.pid;
รวม /etc/nginx/modules-enabled/*.conf;
เหตุการณ์ {
worker_connections 1024;
}
http {
ส่วนหน้าต้นน้ำ {
ส่วนหน้าของเซิร์ฟเวอร์: 3000;
}
เซิร์ฟเวอร์ {
# ฟัง Directive บนพอร์ต 443 (TLS)
ฟัง 443 ssl;
ฟัง [::]:443 ssl;
ssl_certificate /etc/nginx/crt_file.crt;
ssl_certificate_key /etc/nginx/priv_key.key;
# ที่เราจัดเก็บ error.log และ access.log ของเรา
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
ที่ตั้ง / {
รูท /usr/src/app/public/;
proxy_pass https://ส่วนหน้า;
}
}
}
ฉันเกือบทำทุกอย่างเพื่อตัดปัญหาเครือข่าย เนื่องจากฉันสามารถ ping ทั้งที่อยู่ ip และชื่อโฮสต์ของนักเทียบท่าส่วนหน้าจากด้านในของคอนเทนเนอร์ nginx (โดยใช้ docker exec -it nginx-proxy sh) ใครมีข้อเสนอแนะเกี่ยวกับ จะลองทำอะไรต่อไปหรือพวกเขาจะเห็นได้ชัดเจนว่าฉันทำอะไรผิด มันจะเป็นความชื่นชมมาก