Tôi đã bắt đầu với một ứng dụng React được cung cấp từ nginx root. Rồi tôi đi theo cái này hướng dẫn để phục vụ ứng dụng từ một thư mục con (/ứng dụng
). Như đề xuất đây, tôi đã thay đổi cấu hình nginx của mình từ đây:
địa điểm / {
gốc /usr/share/nginx/html;
try_files $uri $uri/ /index.html =404;
}
để này:
vị trí/ứng dụng {
bí danh/usr/share/nginx/html;
try_files $uri $uri/ /app/index.html =404;
}
Loại này hoạt động - Tôi có thể duyệt đến https://localhost/app và nhận tất cả các tệp tĩnh như mong đợi. Vấn đề của tôi là tải lại các URL được điều khiển bởi React Router (tức là gửi cho máy chủ nginx một URL bao gồm các phần sau /ứng dụng
). Ví dụ: trước khi thay đổi, cả hai cách sau đều hoạt động:
- https://localhost <- hoạt động
- https://localhost/auth/local <- cũng hoạt động
Đầu tiên chỉ đơn giản là trả về trang chủ. Nguyên nhân thứ hai khiến nginx mặc định là index.html và bộ định tuyến React đã cẩn thận điều hướng nội bộ đến đúng trang (/auth/cục bộ
).
Sau khi thay đổi, yêu cầu đầu tiên hoạt động, nhưng yêu cầu thứ 2 không thành công với 404:
- https://localhost/app <- hoạt động
- https://localhost/app/auth/local <- không thành công với 404
Bằng cách thêm một số tiêu đề gỡ lỗi, tôi thấy rằng sau khi thay đổi, trong trường hợp thứ 2, nginx hoàn toàn không thực thi khối.
Tôi đang làm gì sai?