web-dev-qa-db-ja.com

NGINXを使用してHTTP経由で静的ファイルディレクトリを提供する方法

問題

NGINXを備えたサーバーには、HTTPを介して提供する必要のあるファイルを含むディレクトリがあります。

ディレクトリは(例)にあります:/ media/user/data

質問

HTTP経由でそのディレクトリ(およびそのすべてのファイルとサブフォルダー)を提供するには、NGINXでどのような構成が必要ですか?

HTTPを介して提供されるディレクトリは完全にアクセス可能である必要があり、すべてのユーザーがディレクトリのすべてのコンテンツを参照できる必要があります。

構成に必要なすべての手順。

研究

見つかったトピックに関する変更の調査は、sites-availableフォルダ内の/etc/nginxディレクトリ内のデフォルトファイルに必要です。

 location /data {
    root /media/user/;
    autoindex on;
  }
}

その他

最近のコメントから提案された回答まで:

Sites-availableのデフォルトファイルを編集してディレクトリを含め、サーバーを再起動し、標準のnginxのお祝いページを表示した127.0.0.1にアクセスしてサービスを提供できることを確認しました。次に、アクセスしようとすると http://127.0.0.1/data サーバーは403 Forbiddenエラーを生成しました。 – Frugal Rasin

5
Frugal Rasin

これは、既存のNginx仮想ホスト(デフォルトの仮想ホスト)を編集することで実現できます。/media/user/dataディレクトリとそのディレクトリ内のすべてのコンテンツが、Nginxサービスが開始されたユーザー(おそらく「nginx」ユーザー)によって読み取り可能であることを確認してください。

これらのファイルを別の(サブ)ドメインでホストする場合は、次のような内容で新しいNginx仮想ホストを作成できます。

server {
  listen *:80;
  server_name example.com www.example.com;

  root /media/user/data;
  autoindex on;
}

pdate:以下のコメントから、Nginxがコンテンツを提供し、403 forbidenエラーを返さないように、ディレクトリの権限を変更することも必要でした。

/media/user/data/ディレクトリの権限は適切でしたが、/media/および/media/user/ディレクトリには実行権限がありませんでした。この問題は、次のコマンドで解決されました。

Sudo chmod o+x /media/ /media/user/

10
Tubeless