Điểm:0

Định cấu hình nginx để phục vụ tham số chuỗi truy vấn

lá cờ jp

Chúng tôi có một trang NextJs, với lần xuất tiếp theo, chúng tôi sẽ nhận được một thư mục mà chúng tôi muốn phân phát từ Nginx. Khi đăng xuất/đăng nhập có một '[[...tham số]].html'. Khi chúng tôi triển khai trang web bằng pm2, nó sẽ hoạt động nếu chúng tôi nhấn vào url "serverIP:port/login/programID/applicant"

Nhưng khi phục vụ qua nginx thì nó không hoạt động.

Dưới đây là nội dung file cấu hình nginx:

người phục vụ{

    nghe 7001;
    server_name server_ip;
    gốc /var/www/html/out/;
   địa điểm / {

            try_files $uri $uri.html $uri.html/ =404;
   }

}

Hãy giúp tôi. Tôi mới sử dụng nginx nên gặp một số khó khăn.

Điểm:0
lá cờ ru

Chuỗi truy vấn đề cập đến các tham số GET mà bạn cung cấp sau URL, ví dụ: ?name=foo. Tôi đoán là bạn muốn phân phối các tệp trong một thư mục thay vì bạn đề cập đến "thư mục ngoài mà chúng tôi muốn phân phát từ Nginx".


Trong trường hợp này, ví dụ của bạn sẽ hoạt động tốt, nhưng try_files quy tắc mong rằng bạn cũng cung cấp tên tệp bên trong URL.

Vì vậy, khi bạn đang yêu cầu GET www.mysite.com sau đó Nginx cố gắng tìm một con đường bên trong nguồn gốc thư mục với một trong hai tên /, .html, .html/ hoặc thất bại với mã lỗi 404. Con đường .html/ đề cập đến một thư mục có tên .html bên trong gốc của bạn và có thể là một sai lầm.

Trong trường hợp bạn có một tệp có tên index.html trong thư mục gốc được chỉ định của bạn thì các yêu cầu sau sẽ phù hợp với nó:

  • NHẬN www.mysite.com/index.html (bởi vì $uri)
  • NHẬN www.mysite.com/index (bởi vì $uri.html)

Những gì bạn có thể đang tìm kiếm là đây:

địa điểm / {
   gốc/var/www/html/ra;
   chỉ mục index.html index.htm;
   try_files $uri $uri/ =404;
}

Điều này làm như sau:

  • Có một tập tin thực tế, được chỉ định bởi $uri, trong thư mục gốc của bạn - sau đó phục vụ cái này.
  • Có một đường dẫn thư mục, được chỉ định bởi $uri, trong thư mục gốc của bạn?
    • Nếu có, hãy kiểm tra xem nó có chứa tệp có tên index.html hoặc chỉ mục.htm - sau đó phục vụ này.
  • Không có điều nào ở trên, trả về 404.

Cho nên NHẬN www.mysite.com sẽ cố gắng tìm một tập tin index.html hoặc chỉ mục.htm bên trong gốc của bạn.


Trong trường hợp bạn vẫn muốn nói đến các chuỗi truy vấn, bạn có thể viết một cái gì đó như thế này:

địa điểm / {
    gốc/var/www/html/ra;
    try_files /$arg_file =404;
}

Sau đó yêu cầu như NHẬN www.mysite.com?file=index.html sẽ tìm kiếm một tập tin index.html bên trong gốc của bạn. Nginx thật tuyệt phải không?


Hi vọng điêu nay co ich :)

Cũng đọc thêm về try_filesCạm bẫy Nginx và những sai lầm phổ biến.

Đă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.