Tôi đang cố gắng phân phát các tệp và ứng dụng đi kèm gói webpack của mình từ một đường dẫn ngữ cảnh. Tệp cấu hình Nginx như sau:
nginx.conf
người phục vụ {
nghe 80;
gốc /usr/share/nginx/html;
chỉ mục index.html index.htm;
địa điểm / {
try_files $uri $uri/ /mfeexample/index.html;
}
vị trí /mfeexample/ {
try_files $uri $uri/ /mfeexample/index.html;
}
}
Dockerfile
#Xây dựng môi trường
TỪ nút:14.2.0-alpine như bản dựng
# Thư mục làm việc
WORKDIR /ứng dụng
#Sao chép tệp gói nút vào thư mục làm việc
SAO CHÉP gói.* .
#Cài đặt phụ thuộc ứng dụng
CHẠY cài đặt npm --silent
#Sao chép tất cả mã
SAO CHÉP . .
#RUN Bản dựng sản xuất
CHẠY npm chạy bản dựng
#môi trường sản xuất
TỪ nginx:ổn định-alpine
# Triển khai ứng dụng đã xây dựng lên máy chủ Nginx
# /usr/share/nginx/html là thư mục tĩnh Nginx dùng để phục vụ ứng dụng
SAO CHÉP --from=build /app/build /usr/share/nginx/html/mfeexample
# Xóa cấu hình Nginx mặc định trong Nginx Container
CHẠY rm /etc/nginx/conf.d/default.conf
# Áp dụng tệp cấu hình mới
SAO CHÉP nginx/nginx.conf /etc/nginx/conf.d/default.conf
# Hiển thị ứng dụng trên PORT 80
TIẾP XÚC 80
# Khởi động máy chủ Nginx
CMD ["nginx", "-g", "tắt daemon;"]
Bây giờ, khi nhìn vào tab mạng trong trình duyệt, tôi thấy tất cả các tệp đang được cung cấp tại http://localhost:3000/mfeexample/, đó chính xác là điều tôi muốn. Tuy nhiên, khi tôi thử tuyến đường lồng nhau, nó bị hỏng, ý tôi là tuyến đường lồng nhau http://localhost:3000/mfeexample/customer/, nhìn lại tab mạng, nginx đang tìm kiếm các tệp trong http://localhost:3000/mfeexample/ khách hàng/index.html, nhưng tôi muốn nginx luôn tìm thấy các tệp từ http://localhost:3000/mfeexample.
Tái bút: Xin lưu ý rằng tôi là người mới sử dụng nginx và tôi đã thực hiện phương pháp thử và sai để đạt được điểm này.
Cảm ơn trước.