Warning: Undefined variable $html in /usr/share/nginx/html/lib/plugins/tabinclude/helper.php on line 240
Nginx Server Block (vhost)
- CentOS
- Testing websites
Basic HTTP-only nginx server_block
First we need to edit /etc/nginx/nginx.conf to allow virtual hosts (known as server blocks when using nginx)
This guide will show how to configure server blocks in the same manner as Ubuntu apache vhosts, using sites-available and sites-enabled.
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; server_name lukeshirnia.co.uk www.lukeshirnia.co.uk; access_log /var/log/nginx/lukeshirnia.co.uk.access.log; error_log /var/log/nginx/lukeshirnia.co.uk.error.log; root /var/www/html/lukeshirnia.co.uk; location / { index index.html index.htm index.php; try_files $uri $uri/ =404; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; #this means php-fpm will run on a port # fastcgi_pass unix:/run/php-fpm/example.com.sock; or you could have php-fpm running on a socket fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/lukeshirnia.co.uk$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/lukeshirnia.co.uk
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.