108:Unixドメインソケットによるリバースプロキシ接続¶
コラム: 謎のファイル .sock
後輩W:Nginxから
unix:/var/run/gunicorn.sockと指定する手順だったので指定したけれど、No such file or directoryというエラーが出ました。ls /var/run/してみたらファイルがなかったので別の環境からgunicorn.sockをコピーしてきたけど、動きません。先輩T:おっと、
gunicorn.sockはファイルじゃないからコピーで持ってきてもだめだぞ。後輩W:ファイルじゃない??
先輩T:たぶん、Gunicornが
gunicorn.sockを用意する構成だと思うけど、Gunicornの起動コマンドオプションはどうなってる?後輩W:systemdで
gunicorn -b 0.0.0.0:8000 apps.wsgi:applicationになってます。先輩T:なるほど、それだとGunicornはTCP 8000で待ち受けしてるのにNginxがUnixドメインソケットでリバースプロキシ接続しようとしてエラーになってるんだね。
(中略)詳細は書籍 自走プログラマー をご参照ください
ベストプラクティス¶
WebサーバーとWebアプリケーションサーバーの通信方式を合わせましょう。 可能なら、TCPよりも高速なUnixドメインソケットによるリバースプロキシ接続を使用しましょう。
Unixドメインソケット は ソケット [1] の一種で、ネットワーク通信で使います。
ソケットには、Unixドメインソケットの他に、 TCP/IP や UDP などがあります。
ソケット通信を行うには、TCP/IP通信であれば <IP>:<PORT> を使用しますが、Unixドメインソケットによる通信では、ファイルパスを使用します [2] 。
待ち受け側と接続側の両方でこのファイルパスを使うことで、ソケット通信ができるようになっています。
(中略)詳細は書籍 自走プログラマー をご参照ください
