web-dev-qa-db-ja.com

このエイリアス設定で拡張子を表示せずにnginxでHTMLファイルを提供する方法

私のウェブサイトを正しく表示するために、nginx内でこのエイリアスを設定するのに多くの問題があります。

私が関係しているウェブサイトはmywebsite.com/mrからアクセスできる必要があり、mywebsite.com/にあるサイトとは異なります。 Webサイトは/fullpathにあります(簡略化のために短縮されています)。サイトは3種類のコンテンツを提供する必要があります。

  1. /fullpath/index.htmlにあるインデックスファイル。
  2. その他のhtmlファイル(ブラウザに.html拡張子を表示しない)。
  3. /fullpathおよびサブディレクトリにある静的アセット(js/css/img)。

私はtry_filesで一致の順序を変更してみましたが、同時にではなく、すべてが機能する状況を見つけました:

location /mr {
  default_type "text/html";
  alias /fullpath;

  # with this one 1 and 3 work
  # try_files $uri/index.html $uri.html $uri; 

  # with this one 2 and 3 work
  # try_files $uri $uri.html $uri/index.html;

  # with this one 1 and 2 work
  try_files $uri.html $uri/index.html $uri;
}

動作しない場合は404です。私があらゆる種類のファイルを正しく提供する方法を誰かが知っていますか?

20
askmike

どうやらエイリアスとtry_files 一緒に動作しないでください 。ただし、エイリアスを使用する必要はないと思います。

location /mr {
  default_type "text/html";
  try_files  /fullpath/$uri /fullpath/$uri.html /fullpath/$uri/index.html  /fullpath/index.html;
}

試してみます:

  • 正確なファイル。
  • .htmlが追加されたファイル。
  • パスのインデックス。
  • デフォルトのインデックス。

Rootディレクティブはtryファイルでも機能すると思いますが、テストすることはできません。

server{
    location /mr {

        root /home/mysite/fullpath;

        default_type "text/html";
        try_files  $uri $uri.html $uri/index.html index.html;
    }
}
27
Danack

@Danackが投稿したものを組み合わせて、探していた結果を導きました(htmlファイルを直接提供します)。

location /health-check {
    default_type "text/html";
    alias /path/to/my/file.html;
}
6
Troy Grosfield