LoginSignup
0
0
100万人に伝えたい!失敗を乗り超えた話を共有しよう

nginx + gunicorn のリバースプロキシ設定で.sockを誤って消去してしまった

Posted at

1. トラブルの内容

AWS EC2上にDjangoRestFrameworkアプリケーションを構築したのですが、その際に.sockファイルを誤って消去してしまいリバースプロキシがワークしなくなってしまいました。
gunicornを再起動すれば.sockファイルは自動生成されるはず・・・が、手間取ってしまったのでメモ。

2. 開発環境

[環境]
EC2 Amazon linux 2023
nginx 1.24.0
gunicorn 20.0.4

[ファイル構成]
/etc/nginx/nginx.conf
/etc/nginx/conf.d/[PROJECT_NAME].conf
/etc/systemd/system/gunicorn.service
/etc/systemd/system/gunicorn.socket
※下の2つのファイルは[任意の名前].serviceと[任意の名前].socketのファイルです。

3. 実際のトラブルシューティング

消してしまわないところに.sockファイルを置くように設定するのがまず第一と考え、homeフォルダ直下にgunicorn-sockディレクトリを作成し、その中に.sockを作成する設定にしました。

gunicorn.socket
[Unit]
・・・

[Socket]
# sockファイルを作る場所を絶対パスで指定
ListenStream=/home/ec2-user/gunicorn-sock/[PROJECT_NAME].sock #変更
・・・

[Install]
・・・
[PROJECT_NAME].conf
server {
    listen  80;
    server_name     [サーバのIPアドレス];

    location / {
        proxy_pass http://unix:/home/ec2-user/gunicorn-sock/[PROJECT_NAME].sock; #変更
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

これで再起動すれば、、、

$ sudo systemctl restart gunicorn.service

結果
スクリーンショット 2023-08-15 17.13.10.png
なぜか繋がらない。。。

4. 解決法

gunicornの再起動前にgunicorn.socketを再起動する必要がありました。

$ sudo systemctl start gunicorn.socket
$ sudo systemctl start gunicorn

スクリーンショット 2023-08-15 18.32.49.png

5. まとめ

nginxとgunicornのリバースプロキシ設定の際に、.socketファイルを再起動するのを忘れないようにというpitfallでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0