Tôi có một bộ sưu tập các tệp trên một chia sẻ Windows được đặt tên \\winserver\bucket.

Trên máy chủ CentOS, tôi có thể kết nối nó để nội dung có sẵn để xem. Tôi đã tạo một thư mục trống có tên /mnt/bucketđể gắn kết.

sudo mount -t cifs -o credentials=/root/bucket.ini \\\\winserver\\bucket /mnt/bucket

Thông tin đăng nhập Windows được lưu trữ trong một tệp tương đối an toàn ( /root/bucket.ini) và tôi dự định đưa lệnh mount /etc/fstabvào một lúc nào đó.

Máy chủ CentOS đang chạy nginx và tôi cần có thể cung cấp các tệp trong phần chia sẻ, chỉ tải xuống, thông qua liên kết http.

Ví dụ: ai đó nhấp vào liên kết trình duyệt có tên http://CentOSname/bucket/item/gizmo.pdfsẽ nhận được \\winserver\bucket\item\gizmo.pdfdưới dạng tệp đã tải xuống.

  • Cách tốt nhất để biến điều này thành hiện thực là gì?
  • Tài khoản người dùng nginx có cần phải có quyền thích hợp để có thể truy cập các tệp không?
  • Các thông số được sử dụng để gắn kết ổ đĩa Windows có đủ để chia sẻ nó với nginx không?

--- Biên tập ---

Câu trả lời của Tero không phù hợp với tôi.

Tôi đã thêm locationrootcác tham số vào nginx.conf và tôi gặp lỗi 403 Forbidden:

server {
    listen       80;
    listen       [::]:80;
    server_name  _;
    root         /usr/share/nginx/html;

    location /bucket/ {
       root /mnt/bucket;
    }

Thêm autoindex onđể xem nội dung thư mục tạo ra cùng một lỗi.

answer

nginx có thể phân phát bất kỳ tệp nào có sẵn trên bất kỳ đường dẫn nào. Vì vậy, tất cả những gì bạn cần làm là gắn kết chia sẻ như bạn đã làm, sau đó định cấu hình nginx để phân phát tệp từ thư mục đó bằng rootchỉ thị.

Bạn cũng cần đảm bảo rằng các quyền khi chia sẻ được đặt để người dùng nginx có thể truy cập các tệp. https://unix.stackexchange.com/questions/68079/mount-cifs-network-drive-write-permissions-and-chown có hướng dẫn cách đặt quyền chia sẻ.