Nginx专用php-fpm服务器的负载均衡

4
我可以帮你将以下内容翻译成中文:

我已经安装了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
如果出现一个空白页面上面写着“拒绝访问”,那么这是由于在php-fpm中添加了security.limit_extensions指令所引起的。
如果你的php-fpm配置中没有这个指令,它将默认为.php,并防止PHP解释器解析所有其他文件类型,因此在尝试时会产生“拒绝访问”的错误。

1

你收到了这个错误,因为PHP-FPM服务器上不存在文件PHP-FPM。

fastcgi_param SCRIPT_FILENAME /home/www/$fastcgi_script_name;

或者(我使用这个是因为对于多个虚拟主机来说更简单)

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

似乎Nginx只是向PHP-FPM服务器提供文件的位置,然后PHP-FPM服务器进行渲染。最简单的解决方案是将文档根目录同步到PHP-FPM服务器。

此帖子可以解释详细信息:http://code.google.com/p/sna/wiki/NginxWithPHPFPM


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接