nginx UNIXドメインソケットエラー


18

私はfedora 17を使用し、unixドメインソケットを使用してnginxをuwsgiでセットアップするとき、適切な許可でディレクトリにソケットを置くとそれは大丈夫ですが、ソケットを置く/tmpとnginxエラーが発生します:

connect() to unix:/tmp/MySite.sock failed (2: No such file or directory) while connecting to upstream

ファイルは存在し、nginxユーザーの読み取り/書き込み権限があります。しかし、このエラーの原因は、実際に私を夢中にさせ、誰かがそれを理解できることです。

回答:


33

でプロセス間通信を目的としたソケットを配置することはできません/tmp

セキュリティ上の理由から、Fedoraの最近のバージョンは名前空間付きの一時ディレクトリを使用します。つまり、すべてのサービスはまったく異なるもので/tmpあり、そのディレクトリ内の独自のファイルしか見ることができません。

この問題を解決するには、/run(以前はとして知られていた/var/run)などの別のディレクトリにソケットを配置します。


1
/ランかかわらず、通常のユーザーの書き込み権限がありません
ホストマスタ

1
/run直接書き込み可能ではありませんが、両方のプロセスで書き込み可能なディレクトリをその下に作成するようにsystemdに指示できます。
マイケルハンプトン

これらの検索を支援するために、これはcentos 7にも当てはまり、ソケットフォルダーを/ runに移動して機能しました。この問題を見つけるのは簡単ではありません。すべてのアカウントがtmp内のフォルダーとファイルを見ることができるため(777をテストに設定)、プロセスができなかったと推測することはできません。
ジョセフK

0

はい!これは役立ちました!

uwsgiからcheck-startup-logsメッセージが表示されていましたが、起動ログにデータがなかったため、何が起こっているのかを知ることができませんでした。結局のところ、私はsockファイルを/ tmp以外の場所に変更し、以下を追加する必要がありました。

catch-exceptions = true

wsgiのiniファイルに。判明したのは、ファイルハンドラーの場所を存在しないディレクトリに記録するように指定していたため、そもそもエラーを記録できなかったことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.