Recently I took my WPT server from an Apache+mod_php setup to Nginx+php-fpm and I have been running into an issue with the viewlog.php getting processed correctly. Basically, on the Apache setup things work as expected. However, under my nginx+php-fpm setup I got a 404 error.
Things I have checked:
file permissions
making sure php-fpm runs under the right user/group
nginx setup
php-fpm setup
Its very frustrating because I cant seem to get to the root of WHY this is 404ing. I’ve tried turning on debug level logging in php-fpm and that didnt turn anything up. I am doing unix sockets instead of tcp sockets for the handoff to php-fpm, no idea if this makes a difference or not. Below are sanitized config files from nginx and php-fpm:
nginx.conf
Main Module
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
Events Module
events {
worker_connections 4096;
multi_accept on;
use epoll;
}
http {
# Basic Settings
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_tokens off;
# Logging
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;
# Buffers & Timeouts
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
send_timeout 2;
keepalive_timeout 10;
keepalive_requests 10000;
reset_timedout_connection on;
client_body_timeout 10;
client_body_buffer_size 128k;
client_header_timeout 30;
# File Cache Settings
open_file_cache max=5000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
# Gzip Settings
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
# Virtual Host Configs
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
site config
server {
listen 80;
server_name localhost;
root /opt/x/y;
index index.php;
location /install/ {
allow x.x.x.x;
allow y.y.y.y;
deny all;
}
location /settings/ {
allow x.x.x.x;
allow y.y.y.y;
deny all;
}
location /testlog.php {
allow x.x.x.x;
allow y.y.y.y;
deny all;
}
location /testlog/ {
allow x.x.x.x;
allow y.y.y.y;
deny all;
}
location /cli/ {
deny all;
}
location ~ ^/(status|healthcheck)$ {
allow 127.0.0.1;
allow x.x.x.x;
allow y.y.y.y;
deny all;
include fastcgi_params;
fastcgi_pass unix:/var/run/php55-fpm.sock;
}
# redirect server error pages to the static pages
#
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# Pass PHP-Files To Pool via UNIX Sockets
location ~ \.php?$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php55-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_split_path_info ^(.+\.php)(.*)$;
#Buffer all the things
#Max response size = 252k
#Avg response size = 437b
fastcgi_buffers 1024 1k;
fastcgi_buffer_size 1k;
fastcgi_busy_buffers_size 1023k;
fastcgi_temp_file_write_size 512k;
fastcgi_read_timeout 120;
#Prevent version info leakage
fastcgi_hide_header X-Powered-By;
}
location ~ /\.ht {
deny all;
}
}
php-fpm.conf
include=/etc/php-fpm.d/*.conf
[global]
pid = /var/run/php-fpm/php-fpm.pid
error_log = /var/log/php-fpm/error.log
log_level = notice
daemonize = yes
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
; See /etc/php-fpm.d/*.conf
www php-fpm pool conf
[www]
listen = /var/run/php55-fpm.sock
listen.allowed_clients = 127.0.0.1
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
user = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 4096
pm.status_path = /status
ping.path = /healthcheck
ping.response = pong
slowlog = /var/log/php-fpm/www-slow.log
rlimit_files = 1024
catch_workers_output = yes
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
If anyone has a guess as to what I’ve screwed up I’m all ears, thanks!