Балансировка нагрузки Nginx с выделенным сервером php-fpm - PullRequest
4 голосов
/ 16 марта 2011

У меня есть настройки сервера с nginx + php-fpm и mysql.У меня есть другой сервер только с установленным php-fpm, поэтому я хотел использовать его в качестве баланса нагрузки.Но когда я использую этот отключенный сервер с php-fpm в качестве балансировщика нагрузки, я получаю сообщение об ошибке при открытии страницы: «Доступ запрещен».

/ etc / nginx / nginx.conf

user www-data;
worker_processes  3;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_names_hash_bucket_size 64;
    access_log  /var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush      on;

    keepalive_timeout   65;
    tcp_nodelay         on;

    #gzip                on;

    upstream php {
        server dedicatedserverip:9000;
    }

    include /etc/nginx/sites-enabled/*;
}

/ etc / nginx / sites-enabled / site.org.conf

server {
    listen   81;
    server_name site.org www.site.org;
    access_log  /var/log/nginx/site.org.log;
    error_log   /var/log/nginx/site.org.log;
    root        /home/www/site.org;
    index       index.php; 

    location ~ .php$ {
        fastcgi_pass  php;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/www/$fastcgi_script_name;
    }
} 

Почему я получил эту ошибку?Когда я изменяю только fastcgi_pass на 127.0.0.1:9000 - все работает нормально.

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Если это пустая страница с надписью «Отказано в доступе», это вызвано директивой security.limit_extensions , которая была добавлена ​​в php-fpm.

Если у вас нетон в вашей конфигурации php-fpm, по умолчанию .php и предотвращает синтаксический анализ всех других типов файлов интерпретатором PHP, который выдает «Access denied» при попытке сделать это.

1 голос
/ 27 марта 2011

Вы получили эту ошибку, потому что файлы PHP-FPM не существуют на сервере PHP-FPM.

fastcgi_param SCRIPT_FILENAME /home/www/$fastcgi_script_name;

или (я использую это, потому что это проще для нескольких vhosts)

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Кажется, Nginx просто предоставляет серверу PHP-FPM местоположение файла, а затем сервер PHP-FPM отображает его. Самое простое решение - это rsync корня документа на сервер PHP-FPM.

Этот пост может объяснить детали: http://code.google.com/p/sna/wiki/NginxWithPHPFPM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...