Điểm:0

Cách lồng hai trang web trong cùng một khối máy chủ nginx

lá cờ br

Với nginx, tôi đang cố thiết lập hai trang web tĩnh trên cùng một miền. đầu tiên là tại ví dụ.com, và ứng dụng còn lại là một ứng dụng React nhỏ tại ví dụ.com/haiku. Điều này có thể giải quyết như thế nào?

Tôi đang gặp sự cố trong đó tệp biểu định kiểu và tệp javascript cho ví dụ.com/haiku đang được yêu cầu từ chính ví dụ.com. Vì tất cả các URI tài nguyên trang đều bắt đầu bằng dấu gạch chéo (ví dụ: /static/style.css), nginx đang xử lý chúng như thuộc về ví dụ.com thay vì lấy chúng từ /haiku.

Cả hai trang web chiếm các thư mục riêng biệt trên máy chủ. ví dụ.com đang ở /srv/http/miền, và ví dụ.com/haiku đang ở /srv/http/haiku

Đây là phần thích hợp trong khối máy chủ nginx của tôi:

gốc/srv/http;
địa điểm / {
  gốc/srv/http/miền;
}
địa điểm /haiku {
  bí danh /srv/http/haiku;
}

Tôi đã thực hiện nghiên cứu của mình về các mô-đun nginx này và tôi hiểu tại sao nó không hoạt động ngay bây giờ. Điều hướng đến example.com/haiku/index.html phục vụ trang, nhưng các tham chiếu của nó đến /static/css/style.css/static/js/main.js đang đánh / khối vị trí. Tôi cần một số loại viết lại nội bộ sẽ mất /static/css/style.css và thay đổi nó thành /haiku/static/css/style.css, vị trí của tệp. Tôi không tìm thấy câu hỏi tương tự trên Google hoặc SE.

Tôi biết rằng tôi có thể dễ dàng giải quyết vấn đề này bằng cách mua một miền khác. Tôi biết tôi cũng có thể thiết lập miền phụ nhưng tôi đặc biệt muốn biết liệu điều này có thể được thực hiện hay không bằng cách lồng một trang web tĩnh vào yêu cầu của một trang web khác mà không cần cấu hình DNS.

Tôi cũng không muốn chỉ thay đổi URI cho các tệp css và js, vì tôi muốn có thể triển khai ứng dụng React nhỏ này trên bất kỳ gốc khối máy chủ nào.

Điểm:1
lá cờ us

Cách tiêu chuẩn để hỗ trợ điều này là định cấu hình URL gốc của ứng dụng để ứng dụng tạo URL tài nguyên chính xác ngay từ đầu.

https://skryvets.com/blog/2018/09/20/an-elegant-solution-of-deploying-react-app-into-a-subdirectory/ hiển thị một cách tiếp cận để React định cấu hình URL cơ sở ứng dụng.

Không nên viết lại HTML ở phía nginx. Nó sẽ tiêu tốn thêm tài nguyên và nó có thể gây ra tác dụng phụ không mong muốn.

Justin St-Amant avatar
lá cờ br
Có, việc thay đổi URL gốc của ứng dụng là giải pháp cho vấn đề của tôi. Tạo tài liệu của Ứng dụng React về việc thay đổi URL gốc cũng có giá trị đối với tôi: https://create-react-app.dev/docs/deployment/#building-for-relative-paths

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.