Stoic Sounds 元はExtroseが運営する個人サイト名

プロフィール

顔写真(V)

Extrose
2002年頃から電脳海にいる。 制作ペースは激減したものの今でも現役の作曲者(自称)であり、機会があればBMSも作る。 が、最近はVを被ってゲーム実況に勤しんでいる。 興味があるものになんでも手を出すのでかなりの趣味を抱えている。

柊 雷夜
ユーチューブ地方で見かけるVのすがた (↑)。 たまに VRChat にも出る。 VRoid Studio 製。

リリース

個人活動

読み物

エンジニア - OS関連 - [nginx] システム起動時に、自動起動に失敗する

キーワード

Alma Linux / CentOS / Red Hat / nginx / リバースプロキシ

概要

systemctl enable nginx としているのに、サーバーの再起動だけだとnginxが上がってこない
原因を調べるためにコンソールに入り、 systemctl status nginx とうつと、下記のような文言が出る

nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor prese>
   Active: failed (Result: exit-code) since Tue 2025-06-03 10:08:18 JST; 25min >
  Process: 956 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE)
  Process: 950 ExecStartPre=/usr/bin/rm -f /ext/var/run/nginx.pid (code=exited,>

 603 10:08:18 prdw.inet.jp systemd[1]: Starting The nginx HTTP and reverse p>
 603 10:08:18 prdw.inet.jp nginx[956]: nginx: [emerg] host not found in upst>
 603 10:08:18 prdw.inet.jp nginx[956]: nginx: configuration file /etc/nginx/>
 603 10:08:18 prdw.inet.jp systemd[1]: nginx.service: Control process exited>
 603 10:08:18 prdw.inet.jp systemd[1]: nginx.service: Failed with result 'ex>
 603 10:08:18 prdw.inet.jp systemd[1]: Failed to start The nginx HTTP and re

※環境により表示が異なることを留意

systemctl restart nginx を行うと、nginxは正常に起動し、以後稼働を始める

原因

nginx においてリバースプロキシ (別ホストへの転送)を実装している場合に起こる
重要なのは下記文言

 603 10:08:18 prdw.inet.jp nginx[956]: nginx: [emerg] host not found in upst>

host not found という訴えは、DNSによりホスト名が解決できなかったことにある
DNSサーバーへ疎通もできるのにこれが出る場合、サービスの起動順に問題がある

対処

サービス (/usr/lib/systemd/system/nginx.service など、環境により異なる) の中に、下記を追記

[Unit]
After=network-online.target
Wants=network-online.target

理屈 : network.target では不足か?

仮に下記が既にあったとする

After=network.target

これによりネットワークが起動後とサービスが立ち上がりそうなものだが、
network.target というのは「ネットワークインタフェースが存在する状態」までを示し、オンラインになったかどうかを示さないとのこと

理屈:Afterだけでは不足か

After は起動順序を制御するので、必須である
Wants はそのサービスが起動するときに、同時に起動する対象として指定する

つまり、Afterだけだと、起動は待つものの、もし他サービスによってそれが起動しない場合に、
最終的に起動に失敗してしまう

そこで、Wants を指定することでサービス起動時に合わせて起動してしまう

理屈:Wantsだけでは不足か

Wants は並行して起動するよう指示はするが、起動を待つ指定ではない
起動順序を問う場合は、After にも指定が必要となる