Here’s a quick guide to setting up the http server Nginx with the latest version of php.
Install Nginx
Update repositories
sudo apt-get update
Install Nginx
sudo apt-get install nginx
Check Nginx is running
systemctl status nginx
If all has went to plan, the following will be output
Active: active (running) since Thu 2016-07-07 16:27:22 IST; 2h 19min ago
Press ctrl + c to return to a shell prompt
If you visit your server’s IP address in a web browser you should be greeted with the Nginx welcome page.
Install php 7.0
If you’re installing php, you’ll almost certainly want to install the php-mysql module, too
sudo apt-get install php-fpm php-mysql
Make a small change that will tighten security a lot
sudo nano /etc/php/7.0/fpm/php.ini
Find the following line
; cgi.fix_pathinfo=1
Change it to
cgi.fix_pathinfo=0
This will prevent php from executing any script except the exact script that was requested
Restart php
sudo systemctl restart php7.0-fpm
An example Nginx config using php
Open the default Nginx config file
sudo nano /etc/nginx/sites-available/default
Change it to the following
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Reload Nginx to have changes take effect
sudo systemctl reload nginx
Test the php configuration
Create a phpinfo file
sudo nano /var/www/html/phpinfo.php
Add the following code
<?php phpinfo(); ?>
Visit http://YOUR_SERVER_IP/phpinfo.php in a web browser and you should see the php info file.
Be sure to remove the phpinfo.php file when done!
sudo rm /var/www/html/phpinfo.php