ฉันกำลังพยายามเทียบท่าสามแอปพลิเคชัน แอปพลิเคชันส่วนหน้าสองแอปพลิเคชันที่ใช้ react และหนึ่งแอปพลิเคชันแบ็กเอนด์ nodejs แอปพลิเคชันส่วนหน้าสองแอปพลิเคชันใช้แบ็กเอนด์เดียวกันกับพอร์ตที่แตกต่างกัน
แอปพลิเคชันส่วนหน้า (https://localhost/login) และส่วนหลัง (https://localhost:8443/api-portal และ https://localhost:8443/api-adminportal) ทำงานได้อย่างสมบูรณ์
ปัญหาคือเมื่อฉันลองเข้าถึงแอปด้านหน้าอื่น ๆ (https://localhost:8443/adminportal/) ฉันได้รับข้อผิดพลาดนี้ในบันทึก nginx:
172.19.0.1 - - [24/พฤษภาคม/2022:13:25:42 +0000] "GET /sockjs-node HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/ 537.36 (KHTML เช่น Gecko) Chrome/101.0.4951.67 Safari/537.36" "-"
24/05/2022 13:25:42 [ข้อผิดพลาด] 31#31: *15 open() "/etc/nginx/html/sockjs-node" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์: 172.19.0.1 , เซิร์ฟเวอร์: localhost, คำขอ: "GET /sockjs-node HTTP/1.1", โฮสต์: "localhost:8443"
และในเบราว์เซอร์ Firefox ฉันได้รับข้อผิดพลาดนี้:
Firefox ไม่สามารถสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ที่ wss://localhost:8443/sockjs-node
ไฟล์ Conf.d ของ Nginx:
เซิร์ฟเวอร์ {
ฟัง 80;
server_name localhost 127.0.0.1 0.0.0.0;
ส่งคืน 301 https://$server_name$request_uri;
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
server_name localhost 127.0.0.1 0.0.0.0;
ssl_certificate /etc/nginx/cert/cert.pem;
ssl_certificate_key /etc/nginx/cert/key.pem;
ที่ตั้ง / {
proxy_pass http://fpr-frontend:3000/;
}
# รวม /etc/nginx/conf.d/koma/*.conf;
error_page 500 502 503 504 /50x.html;
ตำแหน่ง = /50x.html {
รูท /usr/share/nginx/html;
}
}
เซิร์ฟเวอร์ {
ฟัง 8443 ssl;
server_name localhost 127.0.0.1 0.0.0.0;
ssl_certificate /etc/nginx/cert/cert.pem;
ssl_certificate_key /etc/nginx/cert/key.pem;
ตำแหน่ง /adminportal/ {
proxy_pass http://fpr-adminportal:3001/adminportal/;
}
ตำแหน่ง /api-adminportal/ {
proxy_pass https://fpr-backend:3335/;
}
ตำแหน่ง /api-พอร์ทัล/ {
proxy_pass https://fpr-backend:3333/;
}
# รวม /etc/nginx/conf.d/koma/*.conf;
error_page 500 502 503 504 /50x.html;
ตำแหน่ง = /50x.html {
รูท /usr/share/nginx/html;
}
}
ไฟล์นักเทียบท่า-compose.yml:
รุ่น: "3.2"
ปริมาณ:
มอนโกดาต้า:
บริการ:
fpr-แบ็กเอนด์:
สร้าง:
บริบท: .
ไฟล์นักเทียบท่า: Dockerfile.backend
ภาพ: fpr-แบ็กเอนด์
env_file: ./config/fpr-backend.env
สิ่งแวดล้อม:
FRONTEND_URL: https://localhost
FRONTEND_ADMIN_PORTAL_URL: https://localhost:8443/adminportal/
ขึ้นอยู่กับ:
- มะม่วง
เปิดเผย:
- "3333"
- "3335"
พอร์ต:
- "3333:3333/tcp"
- "3335:3335/tcp"
คำสั่ง: ["ไหมพรม", "เริ่ม"]
fpr-ส่วนหน้า:
สร้าง:
บริบท: .
ไฟล์นักเทียบท่า: Dockerfile.frontend
หาเรื่อง:
VITE_BACKEND_URL: https://localhost:8443/api-portal/
ภาพ: fpr-frontend
env_file: ./config/fpr-frontend.env
ขึ้นอยู่กับ:
- fpr-แบ็กเอนด์
เปิดเผย:
- "3000"
คำสั่ง: ["yarn", "serve", "--host=fpr-frontend", "--port=3000"]
fpr-adminportal:
stdin_open: รัน # นักเทียบท่าจริง -i
tty: รัน # นักเทียบท่าจริง -t
สร้าง:
บริบท: .
นักเทียบท่าไฟล์: Dockerfile.adminportal
หาเรื่อง:
พอร์ต: 3001
REACT_APP_API_URL: https://localhost:8443/api-adminportal/
ภาพ: fpr-adminportal
env_file: ./config/fpr-adminportal.env
สิ่งแวดล้อม:
- PUBLIC_URL=https://localhost:8443/adminportal
ขึ้นอยู่กับ:
- fpr-แบ็กเอนด์
เปิดเผย:
- "3001"
พอร์ต:
- "3001:3001/tcp"
คำสั่ง: ["ไหมพรม","dev"]
มองโก:
ภาพ: mongo
env_file: ./config/mongo.env
ปริมาณ:
- mongodata:/etc/mongo
จิงซ์:
ภาพ: nginx
ขึ้นอยู่กับ:
- fpr-แบ็กเอนด์
- fpr-ส่วนหน้า
- fpr-adminportal
ปริมาณ:
- ./config/nginx/conf.d/:/etc/nginx/conf.d/
- ./modules/fpr-backend/certificates/UserPortal:/etc/nginx/cert
เปิดเผย:
- "443"
- "8443"
พอร์ต:
- "8000:80/tcp"
- "443:443/tcp"
- "8443:8443/tcp"