Nginx [engine x] is a free high-perfomance HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev.
Lets start the installation process:
Stop and disable existing apache.
# systemctl stop httpd.service
# systemctl disable httpd.service
Install php-fpm
# yum install php-fpm -y
Enable and start php-fpm service:
# systemctl enable php-fpm.service
# systemctl start php-fpm.service
To install Nginx
# yum install nginx -y
Enable and start Nginx service
# systemctl enable nginx.service
# systemctl start nginx.service
Test Nginx
Open up your web browser and navigate to http://localhost/ (example). You will see the default nginx welcome screen.
Configure Nginx
Open the file /etc/nginx/nginx.conf in vi
# vi /etc/nginx/nginx.conf
Set the worker_processes (No. Of CPU’s in your system you want to utilise). To see the no. Of CPU’s, you can use the command “lscpu”. For default you can set to 1.
worker_processes 1;
Example of working nginx.conf:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
index index.html index.htm;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
#Change below value to suit your need:
fastcgi_read_timeout 6000s;
server {
listen 80 default_server;
server_name localhost;
root /usr/share/nginx/html;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
# redirect server error pages to the static page /40x.html
#
error_page 404 /404.html;
location = /40x.html {
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
}
Save and close the file. Restart Nginx service:
# systemctl restart nginx.service
Test PHP
Create a sample “phpinfo.php” file in the nginx document root folder:
# vi /usr/share/nginx/html/phpinfo.php
Append the lines as shown below:
Save and close the file. Restart Nginx service:
# systemctl restart nginx.service
Navigate to http://localhost/testphp.php (example). It will display all the details about PHP,build,setups.