Nginx is een webserver en een reverse-proxyserver gericht op laag geheugengebruik en hoge prestaties. Host je een dynamische website op je VPS (e.g. WordPress), dan heb je naast Nginx ook MariaDB nodig (of een vergelijkbaar alternatief zoals MySQL).
In dit artikel behandelen we de installatie en configuratie van Nginx in de volgende onderdelen:
- De installatie van Nginx
- De HTTP- en HTTPS-poorten openen in je firewall
- Een Nginx server block instellen
- PHP-installatie en configuratie
De nginx-installatie
Stap 1
Voor je Nginx installeert, update je eerst je VPS:
dnf -y update
Stap 2
Vervolgens installeer je Nginx met het commando:
dnf -y install nginx
Stap 3
Na de installatie start je Nginx met het commando:
systemctl start nginx
systemctl enable nginx
De HTTP- en HTTPS-poorten openen in je firewall
Als je een firewall zoals Firewalld gebruikt, staan de HTTP en -HTTPS-poorten van je firewall standaard dicht. In dit onderdeel zet je de HTTP- en HTTPS-poorten open.
Stap 1
Open de HTTP- en HTTPS-poorten:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
Om de veranderingen door te voeren herlaad je de firewall:
firewall-cmd --reload
Stap 2
Gebruik je de VPS-Firewall in het controlepaneel? Open dan ook de HTTP- en HTTPS-poorten in je controlepaneel:
Een Nginx server block instellen
Nginx maakt gebruik van server blocks. Deze zijn vergelijkbaar met Apache's virtual hosts en stellen je in staat om meer dan één website tegelijkertijd online te hosten.
Stap 1
Eerst maak je een directory aan voor je domein (met de optie -p van 'parent' maak je automatisch ontbrekende onderliggende mappen aan).
mkdir -p /var/www/example.com/html
Stap 2
Doorloop je deze stappen als root-user? Schakel dan eerst terug naar je eigen user met het commando exit en gebruik vanaf hier 'sudo' bij het uitvoeren van de commando's in dit artikel, of schakel na deze stap weer terug naar de root-gebruiker.
De root-user is door het gebruik van sudo automatisch eigenaar geworden van deze directory. Pas voor de html-folder de eigenaar aan naar jezelf met het commando:
chown $USER:$USER /var/www/example.com/html
Stap 3
Pas de rechten tot de directory (en onderliggende mappen via de recursive optie -R) aan zodat de eigenaar volledige toegang heeft en de groep en andere gebruikers bestanden in de directory kunnen lezen en uitvoeren.
chmod -R 755 /var/www/example.com
Stap 4
Maak een testbestand aan in de html-directory om de werking van je Nginx-server te testen.
nano /var/www/nginx.example.com/html/index.html
Mocht je nog geen Nano geïnstalleerd hebben op je VPS, gebruik dan het commando hieronder of de teksteditor Vi:
dnf -y install nano
Geef het bestand de volgende inhoud, of gebruik je eigen html-code:
<!DOCTYPE html>
<html>
<head>
<title>Voorbeeld</title>
</head>
<body>
<p>Hello world! </p>
</body>
</html>
Sla de wijziging op en sluit nano (ctrl + x > y > enter).
Stap 5
Om de inhoud van het index.html bestand te kunnen tonen, maak je een server block aan voor Nginx. Hierin geef je op welke poorten en directory je gebruikt, je server naam en welke bestanden als index gebruikt mogen worden:
nano /etc/nginx/conf.d/example.com.conf
Stap 6
Plak de volgende configuratie in het geopende bestand:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
}
Sla de wijziging op en sluit nano (ctrl + x > y > enter).
Stap 7
Je kunt nu direct de werking van je webserver testen door in een browser naar http://example.com te gaan, waarbij je example.com vervangt door je hostname (te controleren met het commando 'hostname'), of het IP-adres van je VPS. Je ziet dan de standaard test-pagina.
Mocht je problemen ervaren, dan komt dit waarschijnlijk door Selinux. We raden aan Selinux in dat geval op permissive mode te zetten, of Nginx toe te staan in Selinux. Voor meer informatie over Selinux, zie deze handleiding.
PHP-installatie en configuratie
Nginx komt niet automatisch met PHP. Om PHP te kunnen gebruiken installeer je het dan ook apart. Hieronder laten we zien hoe je PHP installeert en configureert en vervolgens de Nginx-configuratie aanpast om PHP te gebruiken.
Stap 1
Installeer de EPEL- en REMI-repository, de laatste PHP-versie is hierin opgenomen:
CentOS Stream 8 / AlmaLinux 8 / Rocky Linux 8:
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
CentOS Stream 8 / AlmaLinux 8 / Rocky Linux 9:
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.2.rpm
Activeer vervolgens de PHP-module:
dnf module reset php dnf module install php:remi-8.3
Stap 2
Installeer PHP met het commando:
dnf -y update
dnf -y install php
Stap 3
Open het PHP.ini-bestand (dit bestand is verantwoordelijk voor de instellingen van je PHP-server):
nano /etc/php.ini
Zoek in het bestand naar 'cgi.fix_pathinfo=1' en verander het naar 'cgi.fix_pathinfo=0' om het uit te zetten (als dat niet al standaard het geval is). Deze optie is onveilig en kan je PHP-server gevoelig maken voor aanvallen. Tip: Gebruik ctrl + w om snel in het bestand te kunnen zoeken.
Sla de wijziging op en sluit nano (ctrl + x > y > enter).
Stap 4
Open het PHP-fpm configuratiebestand:
nano /etc/php-fpm.d/www.conf
Verander de volgende waardes:
user = nginx
group = nginx
listen = /run/php-fpm/www.sock
Sla de wijziging op en sluit nano (ctrl + x > y > enter).
Stap 5
Schakel PHP-fpm in zodat PHP-automatisch opstart na een reboot van je VPS:
systemctl enable php-fpm
Stap 6
Controleer of de PHP-installatie is gelukt door een info.php bestand aan te maken. Dit bestand toont je server's huidige PHP-configuratie.
Maak het info.php bestand aan:
nano /var/www/nginx.example.com/html/info.php
Plaats de volgende code in het bestand:
<?php
phpinfo();
?>
Sla het bestand op en sluit het af (ctrl + x > y > enter).
Stap 7
Om de inhoud van het info.php bestand te kunnen tonen, pas je het server block van je domein aan.
Open het server block:
nano /etc/nginx/conf.d/example.com.conf
Pas het bestand aan naar het voorbeeld:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Sla het bestand op en sluit het af (ctrl + x > y > enter).
Stap 8
Herstart vervolgens Nginx:
systemctl restart nginx
Stap 9
Open een web-browser en ga naar je php test-pagina:
http://example.com/info.php
Als je alle stappen correct hebt uitgevoerd zie je een PHP-informatie pagina zoals hieronder:
Daarmee zijn we aan het einde gekomen van deze handleiding voor de installatie van Nginx in Centos Stream, AlmaLinux of Rocky Linux. Je kunt nu PHP, HTML en CSS gebruiken op jouw website.
Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.