@Value_humor

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

nginxの導入中に出たnginx: configuration file /etc/nginx/nginx.conf test failedの解決方法がわからない

解決したいこと

ターミナルでnginx1を導入する際に設定ファイルを編集して再読み込みを行うと

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

と出てきます。
その原因をみていくと

2020/12/17 10:21:47 [warn] 26139#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:5
2020/12/17 10:21:47 [emerg] 26139#0: unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/rails.conf:69
nginx: configuration file /etc/nginx/nginx.conf test failed

と出るので、設定ファイルの書き方がおかしいのかと思いました。
しかしここに、どこを探してもおかしいところを見つけることはできませんでした。
該当ファイルはこちらになります

sudo vim /etc/nginx/conf.d/rails.conf

upstream app_server {
  # Unicornと連携させるための設定
  server unix:/var/www/positi-bank/tmp/sockets/unicorn.sock;
}

# {}で囲った部分をブロックと呼ぶ。サーバの設定ができる
server {
  # このプログラムが接続を受け付けるポート番号
  listen 80;
  # 接続を受け付けるリクエストURL ここに書いていないURLではアクセスできない
  server_name 52.196.23.171;

         # クライアントからアップロードされてくるファイルの容量の上限を2ギガに設定。デフォルトは1メガなので大きめにしておく
  client_max_body_size 2g;

# 接続が来た際のrootディレクトリ
  root /var/www/positi-bank/public;

# assetsファイル(CSSやJavaScriptのファイルなど)にアクセスが来た際に適用される設定
  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;

  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://app_server;
  }

  error_page 500 502 503 504 /500.html;
}
~
~
~
~
~
~
~
~
~
~
~
~
~                                                                                                                                                                                                            
~
~
~
~
~
~
~
~
~
~
~
~
-- 挿入 --              

自分で試したこと

指定された行数がそもそもないのでどこか記述を間違えているのかと思い何度も見返し、間違いのないよう見本となる記述をコピペしたりもしましたが変わりませんでした。
対策方法わかる方いらっしゃれば回答お願い致します。

0 likes

1Answer

その rails.conf を手元で構文チェックしてみたところエラーはありませんでした。ちょっと原因は分かりませんが、一度手元で nginx -t コマンドを実行して構文チェックをしてみると何か分かるかもしれません。実行して以下のように表示されれば正常です。

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

(出力を見ると /etc/nginx/nginx.conf ファイルだけチェックしたように見えますが、このファイルから /etc/nginx/conf.d/ 以下のファイルを自動的に読み込む設定になっているはずなのでこれで OK です。)

まず rails.conf の内容を空にして、少しずつ設定行を追加しながら nginx -t を繰り返すといいと思います。


~ ~ ~ ... --挿入-- の部分はファイルの内容ではなく Vim を開いてターミナルをそのままコピペした結果の文字列ですよね? もしファイルの内容がその通りだとエラーが出ます。

0Like

Comments

  1. @Value_humor

    Questioner

    回答ありがとうございます。
    試しにファイルの記述した部分を消して nginx -t を行ってみましたが

    ```
    nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
    2020/12/18 04:07:31 [warn] 785#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:5
    2020/12/18 04:07:31 [emerg] 785#0: unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/rails.conf:34
    nginx: configuration file /etc/nginx/nginx.conf test failed
    ```
    と出てしまいます。
    unexpectedが指定している行は記述できる範囲ではない行なので謎です、、、。
  2. 最初のエラーは69行目で、36行ある rails.conf を空にした後のエラーは34行目を指している。ということはエラーの行数は rails.conf の行数+33〜34行で報告されていそうですね。

    rails.conf の後に読み込まれる設定ファイルはありませんか? ls /etc/nginx/conf.d コマンドの結果を見てみてください。

    また、 /etc/nginx/nginx.conf の中身も見てください。
    include /etc/nginx/conf.d/*.conf; のような記述で、 conf.d/ 以下にある rails.conf などを読み込む設定になっていると思いますが、その後に30行以上続けばそのあたりも怪しいです。
  3. @Value_humor

    Questioner

    確認してみたのですが、該当箇所が見当たりませんでした。
    しかし、ご指摘していただいたいくつかの事柄から、結局はそこで読み込んでいるファイルに何らかの異常が起きているのは間違いなさそうなので、Linuxコマンドで rm を使い問題のファイルを削除し、新たに書き直したところ上手く行きました。
    おそらく最初の時に何か余計なところを消してしまっていたのだと思います。
    色々と教えていただきありがとうございました!

Your answer might help someone💌