How to Install and Configure Nginx on CentOS 7
Nginx is a very popular web server due to its performance and ease of use. In this tutorial, we will walk you through the installation and basic configuration of Nginx on CentOS 7.
In the Serverspace you can create a server with already installed app "Nginx".
Installing Nginx
If you use a non-root user, then you must have sudo rights and to add to all the commands sudo in front of them.
To install Nginx, add the EPEL repository.
yum install epel-release -yNow we will install Nginx, as well as the nano text editor for convenience.
yum install nginx nano -yBy default, Nginx is configured to work with both IPv4 and IPv6 addresses. If the last one is not configured on the server, as in my case, then the web server simply will not start. Therefore, we immediately go to the config:
nano /etc/nginx/nginx.confFind the next line and comment on it, that is, put a # sign at its beginning:
listen [::]:80 default_server;Result:
# listen [::]:80 default_server;Let's save the file and check the config for errors:
nginx -tOutput:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulIf your output looks different, then it says what errors need to be corrected in the config.
Now let's start Nginx and add it to autorun.
systemctl enable --now nginxIf you are using Firewall, you need to add an allowing rule for the web server. Below is an example for Firewalld, enter the commands in sequence:
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reloadConfiguring the location of site files
By default, nginx displays an information page on the site. Let's set up a different location for the site files and add our own page. First, let's create the required directories.
mkdir -p /var/www/defaultNow let's create the page itself in a new folder:
nano /var/www/default/index.htmlAnd add content to it, which can be anything. For example:
<h1>My first web page</h1>Let's set the owner of the directory and the file in it to the nginx user:
chown -R nginx:nginx /var/www/default/We will use the virtual host already in the nginx configuration and replace the configuration for the location of the site files. To do this, open the nginx configuration:
nano /etc/nginx/nginx.confYou need to find the server section, which starts with listen 80 default_server;, and in it the root parameter, which sets the path to the site files. Let's replace it with the path /var/www/default/ we just created:
server {
listen 80 default_server;
# listen [::]:80 default_server;
server_name _;
root /var/www/default/;
...
Save the file and restart nginx.
systemctl restart nginxNow, when accessing the server address from the browser window, you will see the contents of the newly created page.
PHP processing setup
To work with PHP, install php-fpm:
yum install php-fpmNow let's run it and add it to startup:
systemctl enable --now php-fpmAdd to the nginx configuration at the end of the same server section as before, settings for working with php-fpm:
nano /etc/nginx/nginx.conflocation ~ .php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
}Restart nginx:
systemctl restart nginxLet's create a file for testing php-fpm functionality:
echo "" > /var/www/default/info.phpLet's open http://server-IP/info.php in the address bar of the browser and see information about PHP:

This output confirms that nginx + php-fpm is working. After testing the server operation, be sure to delete this page, because it poses a threat to server security.
700
300
700
300
700
300