【问题标题】:Nginx 1.6 + php5-fpm socket communication failNginx 1.6 + php5-fpm 套接字通信失败
【发布时间】:2014-07-05 02:35:37
【问题描述】:

我有 Nginx 和 PHP5-fpm 的问题,如果我配置 Nginx 1.2.1 一切都很好,但如果我升级到 1.6 我只有空白页。谁能说说为什么?

套接字创建良好。 Html页面工作 如果我在 Chrome 中看到网络,我有 200OK 在 PHP 中只有:

<?php
phpinfo();
?>

我的配置文件:

/etc/nginx/conf.d/web.conf

server {

listen 192.168.99.127:8080;
server_name sub.localhost;


root /home/clients_ssl/sub/www;
index index.php index.html index.htm;

location ~ \.php$ {

fastcgi_pass unix:/etc/php5/fpm/socks/ssl_sub.sock;
include fastcgi_params;
fastcgi_param HTTPS on;

}

location ~ /\. {
deny all;
}

access_log /home/clients_ssl/sub/logs/access.log;
error_log /home/clients_ssl/sub/logs/error.log;
error_page 404 /404.html;

}

/etc/nginx/nginx.conf

user nginx;
worker_processes 1;

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


events {
worker_connections 1024;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;
}

/etc/php5/fpm/pool.d/web.conf

[ssl_sub]

listen = /etc/php5/fpm/socks/ssl_sub.sock
user = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0
php_admin_value[open_basedir]=/
php_admin_value[session.save_path]=/home/clients_ssl/sub/tmp
php_admin_value[upload_tmp_dir]=/home/clients_ssl/sub/tmp
php_admin_value[disable_functions]=dl

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

(((如果我将 lister.owner/group 和 user/group 更改为其他系统用户,例如 USER0 我有错误 502 bad gateway,问题出在哪里?))))

/etc/nginx/fastcgi_params

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

【问题讨论】:

  • 你检查过这个文件是否存在吗? (/etc/php5/fpm/socks/ssl_sub.sock)
  • /etc/php5/fpm/socks/ssl_sub.sock 存在:srw-rw---- 1 nginx nginx 0 kvě 16 17:49 ssl_sub.sock
  • 不知道如何解决?
  • 你有什么操作系统?你可能有兼容性问题。例如,如果您使用 Debian wheezy,则需要 Nginx 才能使用该发行版。这意味着库必须与 Nginx 兼容,这样才能正常工作。

标签: sockets nginx


【解决方案1】:

如果你已经通过包含升级了 nginx

deb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx

在您的 /etc/apt/sources.list 文件中,您的 /etc/nginx 文件夹中不会有 fastcgi.conf 的副本。

在 /etc/nginx 中找到文件fastcgi_params 并添加这一行:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

到文件的顶部。将文件重命名为fastcgi.conf

然后,您可以在 .conf 文件的 php 位置块中将 include fastcgi_params; 替换为 include fastcgi.conf;

【讨论】:

  • 我认为这应该被接受为写答案!这是升级到 Nginx 1.6.1 及更高版本时引入的错误的详细链接 -- bugs.launchpad.net/nginx/+bug/1366651 从头开始​​安装不应该导致问题,只有升级和接受以保持我们当前的配置会导致此错误。
【解决方案2】:

在将 nginx 1.2 更新到 1.6 后我也遇到了一些问题

当我安装 wheezy-backports main contrib non-free 时,我得到了这些信息(见下文)

我把这个列表:/etc/apt/sources.list

那个来源:

deb http://ftp.de.debian.org/debian/ wheezy-backports main contrib non-free

安装信息:

Fastcgi 配置问题 ============================

nginx 发布了一个修改后的fastcgi_params,它声明了 SCRIPT_FILENAMEfastcgi_param。该行现已被删除。 从现在开始,我们也从上游发送 fastcgi.conf 存储库,其中包含一个健全的SCRIPT_FILENAME 参数值。

所以,如果你使用的是 fastcgi_params,你可以尝试切换到 fastcgi.conf 或手动设置相关参数。

所以我在 etc/nginx/conf.d/default.conf 中进行了更改

我把include fastcgi_params;改成了include fastcgi.conf;

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
        fastcgi_read_timeout 600;
    }

之后,重启php5-fpm和nginx

我的 php 公式/表单现在可以在 nginx 1.6.2 中再次使用

【讨论】:

    猜你喜欢
    • 2015-09-14
    • 2012-11-14
    • 2012-06-07
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 2012-06-29
    • 2016-06-11
    • 2014-09-27
    相关资源
    最近更新 更多