nginx, php-fpm and server blocks

Tutorial on installing and configuring nginx webserver, php-fpm and vhost (server blocks)

Quick Links:
Nginx Repository
Install Nginx
Nginx Vhost Config
nginx vhost symbolic link


To install Nginx you may need to add a repo to your server. Yum repo can be added by adding an nginx repo (nginx.repo) to /etc/yum.repos.d/

Full path: /etc/yum.repos.d/nginx.repo

You can either ‘touch’ a new file then edit or create a file by using vim.

name=nginx repo



Once you have added this you can install nginx using:

yum install -y nginx php-fpm


My suggestion would be to then turn nginx to run on boot, the following should return NO output:

chkconfig nginx on
chkconfig php-fpm on

The next step is to configure /etc/nginx/nginx.conf to allow virtual hosts (known as server blocks when using nginx)

Add the following line to the configuration in the http section:

include /etc/nginx/sites-enabled/*;


Now the best practice for nginx is to create a system similar to that of vhosts using ubuntu. Create the following directories to configure the vhosts:

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

Once these have been made, go to /etc/nginx/sites-available and create a vhost with the following configuration:

server {
    listen 80;
    access_log /var/log/nginx/;
    error_log /var/log/nginx/;
    root /var/www/html/;

location / {
    index index.html index.htm index.php;

location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;

You can see that php will be handled by PHP-FPM listening on port 9000. This port does not need to be opened. If you type: netstat -plnt you will be able to see PHP-FPM listening to the port.

Once the vhost had been created we will need to create a symbolic link from /sites-available/ to /sites-enabled/.

Moving into the /etc/nginx/sites-enabled/ directory and type the following:

ln -s /etc/nginx/sites-available/

Your vhost should now work.

If you wish to take a site offline for any reason, you can remove the symbolic link by using the ‘rm’ command on the vhost in /etc/nginx/sites-enabled/

And you are DONE!

Restart PHP-FPM and nginx if you face any issues.


You will need to install php-mysql if you wish to use php and a database.

Please see my mysql or Mariadb guide for more information. You will need this for wordpress installations etc.


For .htaccess and mod_rewrite (nginx equivalent) please visit the following link: