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

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

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

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

0回答

687閲覧

nginxの設定にエラーが発生した場合の挙動について

ryooku

総合スコア4

nginx

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

0クリップ

投稿2020/10/20 13:53

前提・実現したいこと

nginxで複数のサイトを作っているのですが、nginxの仕様なのか、もっといいconfファイルの書き方があるのか悩んでいます。

confファイルの構成
/etc/nginx/conf.d 配下にサイトごとにsite1_ssl.conf,site2_ssl.confのような形で設定ファイルを置いている

サイトのディレクトリ構成
/home/hogehoge/site1/docmentroot/
/home/hogehoge/site1/log/
/home/hogehoge/site2/docmentroot/
/home/hogehoge/site2/log/

発生している問題・エラーメッセージ

ある日site1の方をもう使わないので、/home/hogehoge/site1/ディレクトリをまるっと消したところ、site2の方が突然閲覧できなくなってしまった。
原因はsite1_name_ssl.confの設定に

access_log /home/hogehoge/site1/log/nginx/access.log main; root /home/hogehoge/site1/docmentroot;

と記載してあり、そんなディレクトリはないぞということでエラーになっており、nginxが止まってしまっていた。
ひとまずファイルを復活させて事なきを得たのですが、今後もうっかりやってしまいそうなので根本的な解決をしたいです。

①設定ファイルにエラーが発生している場合に速攻でnginxが止まってしまうのは仕様なんでしょうか。。フェールセーフ的な設定はできないのでしょうか
②対象ディレクトリが存在するかどうかという、存在チェックはできるのでしょうか。
③みなさんはどのような書き方をしているのでしょうか。気をつけて、site1_ssl.confを無効化してからディレクトリ削除するという手順を踏むしかないのでしょうか

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

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

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

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

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

hentaiman

2020/10/20 14:34

> 今後もうっかりやってしまいそうなので根本的な解決をしたいです。 これを直す気はない感じですかね?通常はこれに対する対策を取りますが
ryooku

2020/10/20 16:14

rmする前に確認メッセージを出すなどの対策を行うイメージでしょうか..? 自分以外の作業者が、site1はもう運用していない不要なサイトなので消してしまおう としてしまうことはあると思うので、消されても突然site2が閲覧できなくなる事態にならない方法がないものだろうかと調べていたのですが。。 (nginxにパスを通しているディレクトリを突然消すようなことがそもそも非常識だと言われてしまえばそれまでなのですが)
hentaiman

2020/10/20 17:11

質問者の方が他の作業者より技術力が高くて本来取るべき慎重な手段を取れるなら質問者が本番サーバーの作業を担当するしかないです。 rmでの確認メッセージ以前に最低限の慎重さを持たない技術者に公開中のサーバーを触らせる事自体がありえないです。 STGサーバーを用意してそちらで編集とかサーバー操作、気を付けるべき点など経験を積んでもらって慣れてから本番サーバーを触らせるしかないです。 > としてしまうことはあると思うので、消されても突然site2が閲覧できなくなる事態にならない方法がないものだろうかと調べていたのですが。。 nginxを複数立てる、仮想環境を用意するなど方法自体はいくらでもありますが、未熟者の操作ミス対策としてこの手法の取るのは相当アホです。 他の作業者のレベルを引き上げるか、質問者が本番サーバーを担当するのが普通の対応でしょうね。
dodox86

2020/10/20 23:14

> 設定ファイルにエラーが発生している場合に速攻でnginxが止まってしまうのは仕様なんでしょうか。。フェールセーフ的な設定はできないのでしょうか 無理言っちゃいかんというかんじですね。「フェイルセーフ」とやらの考え方如何によるかもしれませんが、不明で不確かな設定があったときにそのまま動くことが正しいのか。エラーがあるのに勝手な動きを続行する方が危険と言う考え方がどちらかと言うと主流です。エラーとは、「それを設定したユーザーが意図したであろう動きができないこと」を示しています。デフォルトの動作とは違います。フェイルセーフとは、危険を検知したときに安全な方へ倒す操作です。安全な方とは、いっそのことサーバーを停止させることです。
ryooku

2020/10/21 02:52

みなさまご意見ありがとうございます。 消しても大丈夫なようにではなく、消されないように対策するのが定石だというのは疑う余地もなく正しいのですが、ちょっと状況が特殊で、消されても他のサイトに影響がでないようにできないか情報探していました。 しかしnginxとしてはやるべきことやってくれているだけで、そんな無茶なこと言われても..という構図なのがよくわかりました。。 愚問にお付き合いいただきありがとうございました。消されないように対策する方向で考えてみます..!
hentaiman

2020/10/21 03:10

無茶でも無理でも無いですよ、対応目的考えるとアホだなーというだけです。 他サイトに影響の無い環境構築は簡単です。先のコメントに書いた通りにしてください。ただしコメント見て方法を即察せない技量・知識量なら絶対にやらない方が良いです。 ただでさえ周りの人間が出来ない中、質問者の管理するハードルが上がって管理する量が増えるだけです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問