Tôi đang cố gắng neo ba ứng dụng, hai ứng dụng giao diện người dùng sử dụng phản ứng và một ứng dụng phụ trợ nodejs, hai ứng dụng giao diện người dùng sử dụng cùng một chương trình phụ trợ với các cổng khác nhau.
Các ứng dụng giao diện người dùng (https://localhost/login) và phụ trợ (https://localhost:8443/api-portal và https://localhost:8443/api-adminportal) đang hoạt động hoàn hảo.
Vấn đề là khi tôi thử truy cập ứng dụng phía trước khác (https://localhost:8443/adminportal/), tôi gặp lỗi này trên nhật ký nginx:
172.19.0.1 - - [24/May/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, như Gecko) Chrome/101.0.4951.67 Safari/537.36" "-"
24/05/2022 13:25:42 [lỗi] 31#31: *15 open() "/etc/nginx/html/sockjs-node" không thành công (2: Không có tệp hoặc thư mục như vậy), máy khách: 172.19.0.1 , máy chủ: localhost, yêu cầu: "NHẬN /sockjs-node HTTP/1.1", máy chủ lưu trữ: "localhost:8443"
Và trong trình duyệt firefox tôi gặp lỗi này:
Firefox không thể thiết lập kết nối với máy chủ tại wss://localhost:8443/sockjs-node.
Tệp nginx conf.d:
người phục vụ {
nghe 80;
server_name localhost 127.0.0.1 0.0.0.0;
trả về 301 https://$server_name$request_uri;
}
người phục vụ {
nghe 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;
địa điểm / {
proxy_pass http://fpr-frontend:3000/;
}
# bao gồm /etc/nginx/conf.d/koma/*.conf;
error_page 500 502 503 504 /50x.html;
vị trí = /50x.html {
gốc /usr/share/nginx/html;
}
}
người phục vụ {
nghe 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;
vị trí /quản trị viên/ {
proxy_pass http://fpr-adminportal:3001/adminportal/;
}
vị trí /api-adminportal/ {
proxy_pass https://fpr-backend:3335/;
}
vị trí /api-portal/ {
proxy_pass https://fpr-backend:3333/;
}
# bao gồm /etc/nginx/conf.d/koma/*.conf;
error_page 500 502 503 504 /50x.html;
vị trí = /50x.html {
gốc /usr/share/nginx/html;
}
}
tập tin docker-compose.yml:
phiên bản: "3.2"
khối lượng:
mongodata:
dịch vụ:
phụ trợ fpr:
xây dựng:
bối cảnh: .
dockerfile: Dockerfile.backend
hình ảnh: phụ trợ fpr
env_file: ./config/fpr-backend.env
môi trường:
FRONTEND_URL: https://localhost
FRONTEND_ADMIN_PORTAL_URL: https://localhost:8443/adminportal/
phụ thuộc:
- mongo
lộ ra:
- "3333"
- "3335"
cổng:
- "3333:3333/tcp"
- "3335:3335/tcp"
lệnh: ["sợi", "bắt đầu"]
giao diện fpr:
xây dựng:
bối cảnh: .
dockerfile: Dockerfile.frontend
lập luận:
VITE_BACKEND_URL: https://localhost:8443/api-portal/
hình ảnh: fpr-frontend
env_file: ./config/fpr-frontend.env
phụ thuộc:
- phụ trợ fpr
lộ ra:
- "3000"
lệnh: ["sợi", "phục vụ", "--host=fpr-frontend", "--port=3000"]
fpr-adminportal:
stdin_open: true # docker run -i
tty: true # docker run -t
xây dựng:
bối cảnh: .
dockerfile: Dockerfile.adminportal
lập luận:
CẢNG: 3001
REACT_APP_API_URL: https://localhost:8443/api-adminportal/
hình ảnh: fpr-adminportal
env_file: ./config/fpr-adminportal.env
môi trường:
- PUBLIC_URL=https://localhost:8443/adminportal
phụ thuộc:
- phụ trợ fpr
lộ ra:
- "3001"
cổng:
- "3001:3001/tcp"
lệnh: ["sợi","dev"]
mongo:
hình ảnh: mongo
env_file: ./config/mongo.env
khối lượng:
- mongodata:/etc/mongo
nginx:
hình ảnh: nginx
phụ thuộc:
- phụ trợ fpr
- giao diện người dùng fpr
- fpr-adminportal
khối lượng:
- ./config/nginx/conf.d/:/etc/nginx/conf.d/
- ./modules/fpr-backend/certificates/UserPortal:/etc/nginx/cert
lộ ra:
- "443"
- "8443"
cổng:
- "8000:80/tcp"
- "443:443/tcp"
- "8443:8443/tcp"