Wie man einen virtuellen Nginx-Host unter FreeBSD einrichtet
Ein virtueller Host ist ein Begriff, der sich auf das Hosten und Betreiben mehrerer Websites wie „site1.co“, „site2.co“ und „site3.co“ auf einem einzigen Node-Server bezieht. Der Begriff „Virtual Host“ gilt übrigens nur für den Apache, während Nginx den Begriff „Server Blocks“ hat, der dem „Virtual Host“ des Apache entspricht. Die Nginx „Server Blöcke“ verwenden den „server_name“ und die Option „listen“, um sich an TCP-Sockets zu binden.
In diesem Lernprogramm zeigen wir dir, wie du die Nginx „Server Blocks“ in der FEMP Stack-Umgebung einrichtest. Wir werden das Konfigurationsverzeichnis für den virtuellen Nginx-Host definieren, einen neuen virtuellen Nginx-Host erstellen und dann den virtuellen Nginx-Host mit aktiviertem SSL erstellen.
Voraussetzung:
Für diese Anleitung musst du den FEMP Stack auf dem FreeBSD 12.0 System installiert haben. Du kannst auch den Link unten nutzen, um den FEMP Stack auf FreeBSD 12.0 einzurichten.
So installierst du den FEMP Stack unter FreeBSD 12.0
Was wir tun werden:
- Nginx Virtual Host Verzeichnis initialisieren
- Einen einfachen Nginx Virtual Host erstellen
- Nginx Virtual Host mit aktiviertem SSL erstellen
Schritt 1 – Initialisierung des Nginx Virtual Host Verzeichnisses
Als Erstes werden wir das Verzeichnis für den virtuellen Host initialisieren, in dem die Konfigurationen für jede Domain auf dem Server gespeichert werden.
Gehe in das Verzeichnis „/usr/local/etc/nginx“ und erstelle ein neues Verzeichnis namens „vhost“.
cd /usr/local/etc/nginx mkdir -p vhost/
Bearbeite nun die Standardkonfiguration von nginx „nginx.conf“ mit dem Editor vim.
vim nginx.conf
Füge die unten stehende Konfiguration in den Block ‚http { … }‘ Block ein.
http { ... include vhost/*.conf; ... }
Speichern und schließen.
Teste die nginx-Konfiguration und stelle sicher, dass kein Fehler auftritt.
nginx -t
Und schon können wir einen neuen virtuellen Host für unseren Domainnamen zum FEMP Stack auf FreeBSD 12.0 hinzufügen.
Schritt 2 – Virtuellen Nginx-Host erstellen
In diesem Schritt erstellen wir eine neue grundlegende Nginx Virtual Host-Konfiguration für eine Domain namens „site1.hakase-labs.io“ mit dem Web-Root-Verzeichnis im Verzeichnis „/usr/local/www/site1“.
Gehe in das Verzeichnis des virtuellen Hosts „/usr/local/etc/nginx/vhost/“ und erstelle mit dem Editor vim eine neue Konfigurationsdatei „site1.hakase-labs.conf“.
cd /usr/local/etc/nginx/vhost/ vim site1.hakase-labs.conf
Ändere die Details Domänenname und Dokumentenstamm mit deiner eigenen Einfügung darin.
server { listen 80; server_name site1.hakase-labs.io; error_log /var/log/nginx/site1-error.log; access_log /var/log/nginx/site1-access.log; root /usr/local/www/site1; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/site1; } location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } }
Speichern und schließen.
Als Nächstes müssen wir das Dokumentenstammverzeichnis für den Domainnamen „site1.hakase-labs.io“ erstellen und die index.html für die Standardseite anlegen.
Gehe in das Verzeichnis „/usr/local/www“ und erstelle ein neues Verzeichnis namens „site1“.
cd /usr/local/www/ mkdir -p site1
Erstelle nun die Datei index.html im Verzeichnis „site1“ mit dem Editor vim.
vim site1/index.html
Füge das einfache HTML-Skript unten ein.
<h1>site1.hakase-labs.io</h1>
Speichere und schließe.
Erstelle außerdem eine neue PHP-Datei namens „info.php“ zum Testen.
vim site1/info.php
Füge das unten stehende Skript ein.
<h1><center>site1.hakase-labs.io</center></h1>
<?php
phpinfo();
?>
Speichere und schließe.
Jetzt sind die Konfiguration des virtuellen Hosts, das Web-Root-Verzeichnis und die index.html-Datei mit dem Domainnamen „site1.hakase-labs.io“ erstellt.
Als Nächstes testest du die nginx-Konfiguration und stellst sicher, dass es keine Fehler gibt. Starte dann den nginx-Dienst neu, um die Änderungen zu übernehmen.
nginx -t service nginx restart
Damit ist die neue Konfiguration des virtuellen Hosts für „site1.hakase-labs.io“ übernommen worden und die Domain ist betriebsbereit.
Öffne nun deinen Webbrowser und gib den Domainnamen „site1.hakase-labs.io“ in die Adressleiste ein.
http://site1.hakase-labs.io/
Daraufhin wird die Standard-Seite index.html angezeigt, die wir gerade erstellt haben (siehe unten).
Rufe außerdem die PHP-Datei „info.php“ auf.
http://site1.hakase-labs.io/info.php
Du erhältst Informationen über die PHP- und PHP-FPM-Konfigurationen (siehe unten).
Damit haben wir erfolgreich einen virtuellen Nginx-Host auf dem FEMP-Stack mit FreeBSD 12.0 erstellt.
Schritt 3 – Erstellen eines virtuellen Nginx-Hosts mit aktiviertem SSL
In diesem Schritt erstellen wir eine neue Nginx-Konfiguration für einen virtuellen Host mit aktiviertem SSL. Wir erstellen einen neuen virtuellen Host mit dem Domainnamen „site2.hakase-labs.io“ und dem Dokument-Root-Verzeichnis „/usr/local/www/site2“.
Um SSL auf dem Webserver zu aktivieren, brauchst du die SSL-Zertifikate.
Unten findest du unsere SSL-Zertifikatsdateien, die wir in das Verzeichnis „/usr/local/etc/ssl“ kopieren.
cp *.pem /usr/local/etc/ssl/
Gehe nun zum Verzeichnis des virtuellen Hosts „/usr/local/etc/nginx/vhost/“ und erstelle eine weitere Konfiguration „site2.hakase-labs.conf“ mit dem Editor vim.
cd /usr/local/etc/nginx/vhost/ vim site2.hakase-labs.conf
Ändere den Domänennamen, den Pfad zu den SSL-Zertifikaten und das Root-Verzeichnis des Dokuments mit deinem eigenen und füge es dann ein.
server { listen 80; server_name site2.hakase-labs.io; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443; server_name site2.hakase-labs.io; root /usr/local/www/site2; index index.html index.htm index.php; error_log /var/log/nginx/site2-error.log; access_log /var/log/nginx/site2-access.log; ssl on; ssl_certificate /usr/local/etc/ssl/fullchain.pem; ssl_certificate_key /usr/local/etc/ssl/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384; ssl_prefer_server_ciphers on; location / { try_files $uri $uri/ =404; } location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } }
Speichern und schließen.
Als Nächstes erstellen wir das Web-Root-Verzeichnis „/usr/local/www/site2/“ und legen dort die Datei index.html an.
Erstelle das Dokumentenstammverzeichnis ‚/usr/local/www/site2/‘ und gehe in dieses hinein.
mkdir -p /usr/local/www/site2/ cd /usr/local/www/site2/
Erstelle nun die Seite index.html mit dem folgenden Befehl.
vim index.html
Füge das HTML-Skript unten ein.
<h1>site2.hakase-labs.io</h1>
Speichere und schließe.
Erstelle außerdem die PHP-Datei „info.php“.
vim info.php
Füge das unten stehende PHP-Skript ein.
<h1><center>site2.hakase-labs.io</center></h1>
<?php phpinfo(); ?>
Speichere und schließe.
Die neue virtuelle Hostkonfiguration mit aktiviertem SSL ist nun erstellt.
Als Nächstes testest du die Nginx-Konfiguration und stellst sicher, dass es keine Fehler gibt. Starte dann den Nginx-Dienst neu, um die Änderungen zu übernehmen.
nginx -t service nginx restart
Damit ist der Nginx-Dienst betriebsbereit und der neue virtuelle Host mit aktiviertem SSL ist von deinem Webbrowser aus erreichbar.
Öffne deinen Webbrowser und gib die URL des virtuellen Hosts „site2.hakase-labs.io“ in die Adressleiste ein.
http://site2.hakase-labs.io/
Jetzt wirst du zur sicheren HTTPS-Verbindung weitergeleitet und bekommst die von uns erstellte Standardseite index.html angezeigt.
Rufe außerdem die PHP-Datei „info.php“ auf.
http://site2.hakase-labs.io/info.php
Du erhältst Informationen über die PHP- und PHP-FPM-Konfigurationen (siehe unten).
Damit haben wir erfolgreich den virtuellen Nginx-Host mit aktiviertem SSL in der FEMP-Stack-Umgebung unter FreeBSD 12.0 eingerichtet.