2017-04-15 8 views
1

nginxには、.../betaにナビゲートして、angle2のフロントエンドの置き換えのベータ版を提供しようとしていますが、私は見えません任意のファイルを見つけるためにnginxを入手してください。nginxがロケーションブロック内にファイルを見つけることができません

私は.../beta ..../beta/index.htmlにナビゲートしようとしましたが、インデックス(またはそのディレクトリに置かれたファイル)を見つけることはできません。

try_filesディレクティブでベータ版のどこにでも移動しようとすると、通常のレールアプリにルーティングされるため、私が知っている場所ブロックが一致しています。

location /beta { 
    root /var/www/ourlatitude/angular_dist; 
    try_files $uri $uri/ /; 
    } 

また、私は、ファイルの一覧を表示し、nginxのを起動するスクリプトの内容を見ることができるので、ファイルが存在することがわかっている(try_filesせずに私はnginxの404応答を取得します)。

echo "starting nginx" 
ls -l /var/www/ourlatitude/angular_dist/index.html 
cat /var/www/ourlatitude/angular_dist/index.html 
nginx -g "daemon off;" 

次はスクリプトの出力です。

starting nginx 
-rw-rw-r-- 1 root root 900 Apr 15 16:16 /var/www/ourlatitude/angular_dist/index.html 
<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Ourlatitude</title> 
    <base href="/"> 

    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="icon" type="image/x-icon" href="favicon.ico"> 
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic"> 
<link href="styles.c06b2f9217e876bbd94a.bundle.css" rel="stylesheet"/></head> 
<body> 
    <app-root>Loading...</app-root> 
<script type="text/javascript" src="inline.1b4e5bfe11db95ba56df.bundle.js"></script><script type="text/javascript" src="polyfills.1511b33427d0b840a6ea.bundle.js"></script><script type="text/javascript" src="vendor.2104002a7ee0b6a6562f.bundle.js"></script><script type="text/javascript" src="main.8ad811b26786bedbaf91.bundle.js"></script></body> 
</html> 

私はここで本当に基本的なものを欠いていると感じています。 何が起こっている可能性がありますか?

nginx設定ファイルのほうが役に立つ場合は、それ以上のファイルを含めることができます。

私がやっている普通のことのうちの他の唯一のものは、これはすべてドッカーのコンテナ内にありますが、私はそうではありません。は、と思っています。

+0

'root'の代わりに' alias'を使います。詳細については、[このドキュメント](http://nginx.org/en/docs/http/ngx_http_core_module.html#alias)を参照してください。 –

+0

@リチャードスミスありがとう - これは動作しますが、なぜか分かりません。私は根本的にうまくいくはずだから、私はdocや何か基本的なことを誤解していると思う。これを回答として掲示し、この場合ルートとエイリアスの使用の違いを教えてください。私はそれを受け入れます。もう一度ありがとう、私は昨日非常に多くの時間を費やしました。 – nPn

答えて

1

rootおよびaliasは全く異なります。 locationブロックは、URIと一致するブロックです(この場合は/beta/index.html)。

rootディレクティブは、URIに追加するプレフィックスを決定し、それをパス名に変換します。あなたの質問では、それはではなくあなたが欲しいものです/var/www/ourlatitude/angular_dist/beta/index.htmlでしょう。 locationブロックの値は、URIとの一致にのみ関連し、ではなく、でパス名を構成します。

ので、第locationの値を除去することによって、パス名を構築locationプレフィックス内aliasディレクティブ:

location /beta { 
    alias /var/www/ourlatitude/angular_dist; 
    ... 
} 

コンストラクトれる、/var/www/ourlatitude/angular_distを付ける前/betaを削除し、その後、URI /beta/index.html一致しますパス名は/var/www/ourlatitude/angular_dist/index.htmlです。

詳細はthis documentを参照してください。

関連する問題