質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

Q&A

解決済

1回答

1765閲覧

Nginxのリバースプロキシでのファイル配信の設定

sin_250

総合スコア112

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

0グッド

0クリップ

投稿2020/04/27 10:06

やりたいこと

自分が作っているサーバプロセスが表示するWebページから、動画ファイルをダウンロードできるようにしたい。

背景

以下、4300などの数字には、深い意味はありません。

サーバ

  • サーバPC上で、ポート4300でlistenしているサーバプロセスAがある (他にも異なるポート番号で待ち受けているサーバプロセスが存在)
  • Nginxはリバースプロキシとして以下のような設定が書かれている。
http { server { listen 80; server_name XXX.XXX.XXX.XXX; # 外部から見たサーバPCのIPアドレス location /A/ { # A向けのアクセス http://XXX.XXX.XXX.XXX/A/... は4300番へ転送 proxy_pass http://localhost:4300; } # 他のサーバプロセスは割愛 } }

クライアント

サーバーAが表示するWebページのHTMLで以下がある。ここを押すとvideo.aviがダウンロードされるようにしたい。

<a href="/tmp/video.avi" download>Download Movie!</a>

上記はブラウザ側でカーソルを当ててステータスバーを見ると、リンク先がhttp://XXX.XXX.XXX.XXX/A/tmp/video.aviとなっている。
クリックしてもサイズ0のファイルをダウンロードしようとしていて、正しいファイルがダウンロードできない。

ダウンロードすべきファイル

サーバPC上の/tmp/video.aviに存在する。(Linux)

質問

おそらくNginxのリバースプロキシの設定だと思い調べたのですが、イマイチわかりませんでした。。。
アドバイスいただけますと幸いです。

素人が作っているものですので、静的ファイルのキャッシュなど難しいことは考えておりません。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

リンク先がhttp://XXX.XXX.XXX.XXX/A/tmp/video.aviとなっている。

この設定だと、http://XXX.XXX.XXX.XXX/tmp/video.avi になりませんか?

サーバPC上の/tmp/video.aviに存在する。(Linux)

alias でドキュメントルートを変更するといいと思います。

location /A/tmp/ { alias /tmp/; } または location /tmp/ { alias /tmp/; }

また、systemd から nginx を起動していて、PrivateTmp=true になっている場合、/tmp//var/tmp/ は他のプロセスとは共有できないので、注意が必要です。

投稿2020/04/27 14:45

TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin_250

2020/04/28 13:41

おっしゃるとおり alias を使ったらうまく行きました。 rootとaliasの違いなど疑問なところもありますが、おいおい勉強していきたいと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問