So I had a huge amount of pain with this and felt it would make sense to collate the action points I’d taken to transition to NGINX.
This was for a working Magento setup, and I just needed to replace the memory-bleeding Apache with something friendlier.
yum install nginx yum install php-fpm php-common yum install php-pdo php-mysqlnd php-mysql
Now we have nginx, php-fpm etc installed. Great stuff! Let’s get it running now
chkconfig php-fpm on service php-fpm start (NOTE: config at /etc/php-fpm.conf and /etc/php-fpm.d/ if you need it)
Now php-fpm is running. If you like you can telnet localhost:9000 and test it – be sure not to open this port to outsiders as it can be a potential security risk… My AWS config blocks port 9000 outside.
Editing: /etc/nginx/nginx.conf removed comment from the line "gzip on" changed the port number from 80 to 81 (for initial testing)
chkconfig nginx on (because I'm sure this is going to work :) service nginx start (NOTE: config at /etc/nginx/nginx.conf if you need it)
AND THEN, IT FAILED!! Rofl, so I needed to figure out some serious stuff – which took as much as 20-25 minutes!
What caught me off guard was the nginx.conf server {} config part
listen 81;
server_name localhost;
root /var/www/html;
location / {
# THIS IS MOST IMPORTANT - DO NOT MISS
try_files $uri $uri/ @handler;
expires 30d;
}
# Good security measures
location /app/ { deny all; }
location /includes/ { deny all; }
location /lib/ { deny all; }
location /media/downloadable/ { deny all; }
location /pkginfo/ { deny all; }
location /report/config.xml { deny all; }
location /var/ { deny all; }
location ~ \.php$ {
# if you uncomment this you will be in hell
#root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# the line below does not contain document_root by default - you NEED to add it in there!!
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# the following 2 pieces are very important too - not there by default
location @handler {
rewrite / /index.php;
}
location ~ .php/ {
rewrite ^(.*.php)/ $1 last;
}
