nginx-0.8.28

Igor Sysoev igor на sysoev.ru
Ср Ноя 25 23:14:18 MSK 2009


On Tue, Nov 24, 2009 at 08:25:19AM -0500, Timur Bakeyev wrote:

> Все еще не получается использовать unix domain sockets так, как хотелось бы.
> 
> Идея была в том, что есть коллекция файлов на медленном NFS сервере и хотелось бы отдавать их в инет. Для этого я замкнул на себя два виртуальных сервера, один из которых читает данные с NFS и выступает backend'ом для другого сервера, который, в свою очередь, выступает прокси для первого, с хранилищем на локальном диске, и далее отдает файлы в Интернет. 
> 
> Проблема вылезает из-за использования директивы: user nginx; в конфиге.
> 
> При старте сокет создается еще root, с правами 755
> 
> srwxr-xr-x 1 root root 0 Nov 24 13:50 storage.socket
> 
> Все бы хорошо, но второй виртуальный сервер, который пытается читать из этого сокета, делает это с правами пользователя nginx, в результате чего обламывается с:
> 
> 2009/11/24 13:50:51  12125#0: *1 connect() to unix:/var/run/storage.socket failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: storage.localdomain, request: "GET /", upstream: "http://unix:/var/run/storage.socket:/"

Это известная проблема, возможно, к следующему релизу будет исправлена.

> По той же причине не срабатывает restart сервиса, т.к. пользователь с правами nginx не может удалить сокет при выходе и спотыкается на нем при старте.
> 
> 2009/11/24 14:13:11  13198#0: bind() to unix:/var/run/storage.socket failed (98: Address already in use)

Удалять сокет должен не воркер, а мастер-процесс, у которого достаточно прав.
Но он удляет только при не аварийном завершении.


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru