lỗi ổ cắm tên miền nginx unix


18

Tôi sử dụng fedora 17 và khi tôi thiết lập nginx với uwsgi bằng cách sử dụng ổ cắm miền unix, khi tôi đặt ổ cắm vào một thư mục với sự cho phép thích hợp thì không sao, nhưng khi tôi đặt ổ cắm vào thì /tmpnó sẽ gây ra lỗi nginx:

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

Các tập tin tồn tại và có quyền đọc / ghi cho người dùng nginx. Nhưng điều gì gây ra lỗi này, nó thực sự khiến tôi phát điên, ai đó có thể tìm ra nó.

Câu trả lời:


33

Bạn không thể đặt ổ cắm dành cho giao tiếp liên tiến trình /tmp.

Vì lý do bảo mật, các phiên bản gần đây của Fedora sử dụng các thư mục tạm thời được đặt tên , có nghĩa là mọi dịch vụ đều thấy hoàn toàn khác nhau /tmpvà chỉ có thể thấy các tệp của chính nó trong thư mục đó.

Để giải quyết vấn đề, đặt ổ cắm vào một thư mục khác, chẳng hạn như /run(trước đây gọi là /var/run).


1
/ run không thể ghi đối với người dùng thông thường
trọ

1
/runkhông thể ghi trực tiếp, nhưng bạn có thể hướng dẫn systemd tạo một thư mục theo đó có thể ghi được bởi cả hai quy trình.
Michael Hampton

Để giúp những người tìm kiếm, điều này cũng áp dụng cho centos 7 và di chuyển thư mục socket sang / run hoạt động. Không dễ để tìm ra vấn đề này, bởi vì mọi tài khoản đều có thể thấy thư mục và tệp trong tmp (đặt 777 để kiểm tra), vì vậy bạn không bao giờ đoán được rằng các quy trình không thể.
JosephK

0

ĐÚNG! GIÚP NÀY!

Đã thấy các thông báo nhật ký kiểm tra khởi động từ uwsgi, nhưng không có dữ liệu trong nhật ký khởi động, không thể tìm hiểu chuyện gì đang xảy ra. Hóa ra, tôi cần thay đổi tệp sock thành một vị trí không / tmp và thêm:

bắt ngoại lệ = đúng

vào tập tin ini của wsgi. hóa ra, tôi đã chỉ định vị trí ghi tệp trình ghi vào thư mục không tồn tại, vì vậy nó không thể ghi lại các lỗi ở vị trí đầu tiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.