nginx-0.8.28

Timur Bakeyev nginx-forum at nginx.us
Tue Nov 24 16:25:19 MSK 2009


Все еще не получается использовать 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)

В первом приближении конфиг такой:

user  nginx;
worker_processes  10;
worker_rlimit_nofile 100000;

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    server {
        listen       unix:/var/run/storage.socket default;
        server_name  _;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }

    server {
        listen     8080;
        server_name  storage.localdomain;

        location / {
            proxy_pass http://unix:/var/run/storage.socket:/;
        }
    }

}

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,25026,25290#msg-25290




More information about the nginx-ru mailing list