Nginx:confファイルに相対的なルートパス


17

root含まれているconfファイルへの相対パスを指定することはできますか?

Webアプリを開発してapp-nginx.confおり、プロジェクトのディレクトリにアプリ固有の構成のファイルを保持しています。このファイルをメインに含め、必要なプロジェクトのサブディレクトリを適切に参照するパスnginx.confを持つようにしたいと思いますroot。例:

# /etc/nginx/nginx.conf
http {
    include /absolute/path/to/app/app-nginx.conf
}


# /absolute/path/to/app/app-nginx.conf
server {
    server_name localhost;
    listen 9090;

    root ./app;
}

同様の設定でnginxを起動した後./app、nginxはnginxのインストールディレクトリ(/usr/local/Cellar/nginx/1.4.3/私の場合)からの相対パスを解決しようとしますが、アプリのディレクトリではありません。

回答:


11

含まれているconfファイルに関連するルートパスを指定することは可能ですか?

短い答え:いいえ。

長い答え:nginxのは、デフォルトでは、唯一のようなパスを知っている--prefix--conf-path、それはコンパイル時に設定されている(参照:https://nginx.org/en/docs/configure.html)。コマンドnginx -V(大文字の「V」)を実行すると、Nginxが使用するさまざまなパスを見つけることができます。だから、--conf-pathメインnginx.confファイルが存在する場所であり、そのパスはすべての相対パスに使用されます。

ただし、公式ドキュメント(https://nginx.org/r/root)によると、rootディレクティブには他の変数を含めることができます。

最初の回答を5年間投稿してから明確にした@cykerに感謝します!


ありがとう、ポティ。残念ながら、どちらのオプションも機能しません。--prefix他のnginxサーバーに影響を与える可能性があり、私の個人的な観点からは、構成ファイルと比較して管理が少し難しくなります。また、nginxではコンテキストset外のディレクティブを使用してカスタム変数を作成serverできないため、app-nginx.confファイルから絶対パスを移動できません。
アントン

そのため、そのパスは相対パスに使用されます。これは不正確だと思います。nginxは、たとえば、オプションincludeおよびにconfig dirを使用するようですssl_certificateが、などのオプションにはprefix dirを使用しますroot。各オプションが使用する完全なリストを思い付かないようです。
サイカー

@Cykerあなたは正しい。今すぐ答えを更新しました。もちろん、完全ではありません。しかし、元の回答よりも優れています(実際に間違っていた/不正確でした)。
ポティカリムトゥ

「初心者からプロまでのNginxを読んでいます。ロケーションブロック内でルートディレクティブを使用しているのを既に見ました。ルートディレクティブは、完全修飾パス/ etc /ではなく/image/myimage.jpgを返すようにNginxに指示します。 nginx / html / app1 / image / myimage.jpg。」だから私見は、Nginx configが相対パスをサポートしていることを意味しますか?
ウェブウーマン

ここで、質問は「root」ディレクティブに固有のものであり、「confファイルへの相対パス」をサポートできるかどうかです。
ポティカリムトゥ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.