我一直在努力让PHP通过PHP-FPM工作。 我们的一台服务器被slowloris打了,是Apache不能处理它。
我得到了NGINX运行一切正常,并传递数据返回到Apache,但现在我试图去纯NGINX至less大部分的东西。 我从源代码安装了PHP-5.2.14,并用PHP-FPM修补了5.14,并configuration了ff:
'./configure' '-enable-fastcgi' '--enable-fpm' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--with-pear=/usr/share/pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-zlib' '--with-zlib-dir=/usr/include' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-mime-magic=/etc/httpd/conf/magic' '--without-sqlite' '--with-libxml-dir=/usr' '--with-xml' '--without-tidy' '--with-mhash=shared,/usr' '--with-mcrypt=shared,/usr' '--without-mssql' '--without-oci8' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter' '--disable-json'
运行php-fpm并正确设置configuration在127.0.0.1:9000上进行监听,使用用户apache,因为这是我的大多数dir被分组到
我有以下的NGINX fastcgiconfiguration:
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 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; fastcgi_param REDIRECT_STATUS 200;
和我的NGINX网站configuration:
server { server_name website.com *.website.com; access_log /var/log/nginx/website.com.access.log; error_log /var/log/nginx/website.com.error.log; root /home/website.com/public_html; # if file doesnt exist pass to @proxy location / { try_files $uri $uri/ @proxy; } # dont log static images and set expiry location ~* \.(jpeg|jpg|gif|png|css|js|ico)$ { try_files $uri @proxy; access_log off; expires 7d; } # send php and other files to apache location ~* \.(php|shtml)$ { # proxy_pass http://127.0.0.1:8080; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; } # proxy to Apache location @proxy { proxy_pass http://127.0.0.1:8080; } }
当我尝试访问一个testing的PHP页面,我得到一个404响应…..请帮助,如果有人知道:)
问题是你没有定义SCRIPT_FILENAME。 您应该包含fastcgi.conf而不是fastcgi_params。 如果你没有fastcgi.conf,那么你的nginx版本已经过时了,你真的应该升级。