nginx unix domain socket error


18

Saya menggunakan fedora 17, dan ketika saya men-setup nginx dengan uwsgi menggunakan unix domain socket, ketika saya menempatkan socket di direktori dengan izin yang sesuai tidak apa-apa, tetapi ketika saya menempatkan socket di /tmpdalamnya akan menyebabkan kesalahan nginx:

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

File tersebut memang ada dan memiliki izin baca / tulis untuk pengguna nginx. Tapi apa yang menyebabkan kesalahan ini, itu benar-benar membuatku gila, dapatkah seseorang mengatasinya.

Jawaban:


33

Anda tidak dapat menempatkan soket yang dimaksudkan untuk komunikasi antar proses di /tmp.

Untuk alasan keamanan, versi terbaru dari Fedora menggunakan direktori temporer namespaced , yang berarti setiap layanan melihat yang sama sekali berbeda /tmpdan hanya dapat melihat file sendiri di direktori itu.

Untuk mengatasi masalah ini, tempatkan soket di direktori yang berbeda, seperti /run(sebelumnya dikenal sebagai /var/run).


1
/ run tidak dapat ditulisi untuk pengguna biasa
hostmaster

1
/runtidak dapat ditulisi secara langsung, tetapi Anda dapat menginstruksikan systemd untuk membuat direktori di bawahnya yang dapat ditulisi oleh kedua proses.
Michael Hampton

Untuk membantu mereka yang mencari, ini juga berlaku untuk centos 7, dan memindahkan folder soket ke / run berfungsi. Tidak mudah untuk menemukan masalah ini, karena setiap akun dapat melihat folder dan file dalam tmp (atur 777 untuk menguji), jadi Anda tidak akan pernah menebak bahwa proses tidak bisa.
JosephK

0

IYA! INI BANTUAN!

Sedang melihat pesan check-startup-log dari uwsgi, tetapi tidak memiliki data di log startup, tidak dapat mengetahui apa yang terjadi. Ternyata, saya perlu mengubah file sock ke lokasi non-/ tmp, dan menambahkan:

catch-exceptionions = true

ke file ini wsgi ini. ternyata, saya telah menentukan lokasi penebangan file ke direktori tidak ada, jadi itu tidak bisa mencatat kesalahan di tempat pertama.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.