Nginx pronounced engine x
is a free, open-source, high-performance HTTP and reverse proxy server responsible for handling the load of some of the largest sites on the Internet.
Nginx can be used as a standalone web server, and as a reverse proxy for Apache and other web servers.
Compared to Apache, Nginx can handle a much large number of concurrent connections and has a smaller memory footprint per connection.
This tutorial will teach you how to install and manage Nginx on your CentOS 7 machine.
Prerequisites
Before starting with the tutorial, make sure you are logged in as a user with Sudo privileges and you don’t have Apache or any other service running on port 80 or 443.
Installing Nginx on CentOS
Follow the steps below to install Nginx on your CentOS server:
1. Nginx packages are available in the EPEL repositories. If you don’t have the EPEL repository already installed you can do it by typing:
sudo yum install epel-release
2. Install Nginx by typing the following yum command:
sudo yum install nginx
3. Once the installation is complete, enable and start the Nginx service with:
sudo systemctl enable nginx
sudo systemctl start nginx
4. Check the status of the Nginx service with the following command:
sudo systemctl status nginx
The output should look something like this:
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2018-03-12 16:12:48 UTC; 2s ago
Process: 1677 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 1675 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 1673 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 1680 (nginx)
CGroup: /system.slice/nginx.service
├─1680 nginx: master process /usr/sbin/nginx
└─1681 nginx: worker process
5. If your server is protected by a firewall you need to open both HTTP (80
) and HTTPS (443
) ports. Use the following commands to open the necessary ports:
sudo firewall-cmd --permanent --zone=public --add-service={http,https}
sudo firewall-cmd --reload
6. To verify your Nginx installation, open http://YOUR_IP
in your browser of choice, and you will see the default Nginx like this:
Manage the Nginx Service with systemctl
You can manage the Nginx service in the same way as any other systemd unit.
To stop the Nginx service, run:
sudo systemctl stop nginx
To start it again, type:
sudo systemctl start nginx
To restart the Nginx service :
sudo systemctl restart nginx
Reload the Nginx service after you have made some configuration changes:
sudo systemctl reload nginx
If you want to disable the Nginx service to start at boot:
sudo systemctl disable nginx
And to re-enable it again:
sudo systemctl enable nginx
Nginx Configuration File’s Structure and Best Practices
- All Nginx configuration files are located in the
/etc/nginx/
directory. - The main Nginx configuration file is
/etc/nginx/nginx.conf
. - To make Nginx configuration easier to maintain it is recommended to create a separate configuration file for each domain.
- New Nginx server block files must end with .conf and be stored in
/etc/nginx/conf.d
the directory. You can have as many server blocks as you need. - It is a good idea to follow a standard naming convention, for example, if your domain name is
mydomain.com
then your configuration file should be named/etc/nginx/conf.d/mydomain.com.conf
- If you use repeatable configuration segments in your domains server blocks then it is a good idea to create a directory named
/etc/nginx/snippets
refactoring those segments into snippets and including the snippet file to the server blocks. - Nginx log files (
access.log
anderror.log
) are located in the/var/log/nginx/
directory. It is recommended to have a differentaccess
anderror
log files for each server block. - You can set your domain document root directory to any location you want. The most common locations for webroot include:
/home/<user_name>/<site_name>
/var/www/<site_name>
/var/www/html/<site_name>
/opt/<site_name>
/usr/share/nginx/html
Now we have successfully installed Nginx on our system you can configure the SSL certificate with Nginx by this guide:
Conclusion
Congratulations, you have successfully installed Nginx with SSL Certificate on your CentOS 7 server. You’re now ready to start deploying your applications and use Nginx as a web or proxy server.
Pingback: Nginx interview Questions and Answers - Youngster Company