Umstieg von Apache und .htaccess auf Nginx
Bei Apache kann der Betreiber einer Website mit einer .htaccess-Datei in einem Ordner Weiterleitungen, Passwortschutz oder Cache-Einstellungen festlegen; der Server liest diese Datei bei jeder Anfrage. Bei Nginx gibt es eine solche Datei nicht: Alle Regeln stehen in den Konfigurationsdateien des Servers und werden einmal gelesen, wenn der Server neu geladen wird.
Der Umstieg von Apache auf Nginx ist deshalb kein Kopieren von Dateien, sondern eine Übersetzung: Für jede Regel in der .htaccess wird die Nginx-Entsprechung geschrieben. Diese Anleitung zeigt die gängigsten Regeln im direkten Vergleich und erläutert typische Stolperfallen sowie das, was nach dem Umstieg zu testen ist. Wenn Nginx für Sie neu ist, werfen Sie zuerst einen Blick in die Anleitung Was ist Nginx.
Kurz gefasst
- Nginx liest keine .htaccess-Dateien; die Regeln wandern in die Serverkonfiguration.
- Für die meisten RewriteRule-Zeilen braucht es kein rewrite: try_files und return genügen.
- PHP läuft über PHP-FPM statt über mod_php; php_value-Zeilen ziehen an eine andere Stelle um.
- Jede Änderung wird mit nginx -t getestet und danach neu geladen.
Tipp
Führen Sie den Umstieg nicht auf der Live-Website durch, sondern zuerst in einer Testumgebung oder auf einer eigenen Subdomain; bewahren Sie die alte Apache-Konfiguration und die .htaccess-Dateien für den Weg zurück auf.
Auf dieser Seite
Logik und Reihenfolge des Umstiegs
-
Den grundlegenden Unterschied verstehen
- Ort der Regeln: Bei Apache können die Regeln in
.htaccess-Dateien über mehrere Ordner verteilt sein. Bei Nginx stehen alle in der Serverkonfiguration: in der Regel eine Datei je Website mit einemserver { … }-Block. Wo die Dateien liegen, hängt von der Distribution ab (/etc/nginx/conf.dist verbreitet;/etc/nginx/sites-availableist die Struktur von Debian/Ubuntu). - Inkrafttreten: Eine
.htaccessgilt, sobald sie gespeichert ist. Bei Nginx wird eine Änderung mitnginx -tgetestet und mit dem Neuladen (Reload) wirksam. Eine fehlerhafte Konfiguration fällt beim Test auf; die laufende Website bleibt unberührt. - Berechtigung: Die Konfiguration zu ändern, erfordert Administratorrechte auf dem Server. Beim Shared Hosting besteht dieser Zugriff meist nicht; dort setzen der Hosting-Anbieter oder das Verwaltungspanel die Regeln um.
- Herangehensweise: Bei Apache wird alles mit
RewriteRulegelöst. Bei Nginx wird die Anfrage zunächst einerlocationzugeordnet; anschließend gelten die Direktiven dieser Location.
: Vergrößern - Ort der Regeln: Bei Apache können die Regeln in
-
Den Umstieg planen
- Bestand aufnehmen: Suchen Sie alle
.htaccess-Dateien der Website; die in Unterordnern (Verwaltungsbereich, Upload-Ordner) werden leicht vergessen. Sehen Sie sich auch die Regeln in der Datei des virtuellen Hosts (VirtualHost) von Apache an. - Regeln einordnen: Weiterleitungen, URL-Umschreibung, Zugriffsbeschränkungen, Header, PHP-Einstellungen. Übernehmen Sie nicht, was nicht mehr gebraucht wird.
- Nginx-Entsprechungen schreiben (siehe die folgenden Abschnitte).
- Testen:
nginx -t, danach die Testliste in der Testumgebung. - Umstellen und beobachten: Verfolgen Sie das Fehlerprotokoll in den ersten Tagen genau.
Bash# Alle .htaccess-Dateien der Website auflisten (Pfad durch Ihr eigenes Website-Verzeichnis ersetzen) find /var/www/beispiel.de -name ".htaccess" -type f # Nginx-Konfiguration testen; wenn alles in Ordnung ist, neu laden sudo nginx -t && sudo systemctl reload nginx
: Vergrößern - Bestand aufnehmen: Suchen Sie alle
-
Die Rangfolge beim location-Abgleich kennen
.htaccess-Regeln laufen der Reihe nach von oben nach unten ab. Bei Nginx dagegen bearbeitet genau einelocationdie Anfrage, und welche gewählt wird, hängt nicht von der Schreibreihenfolge ab, sondern von dieser Rangfolge:location = /adresse: Bei exakter Übereinstimmung wird sie sofort gewählt.- Unter den Präfix-Locations wird die längste Übereinstimmung ermittelt. Ist diese Location mit
^~geschrieben, wird sie gewählt, und reguläre Ausdrücke werden nicht mehr geprüft. - Locations mit regulärem Ausdruck (
~mit,~*ohne Beachtung der Groß- und Kleinschreibung) werden in der Reihenfolge der Datei geprüft; die erste passende wird gewählt. - Passt kein regulärer Ausdruck, gilt die in Schritt 2 gefundene längste Präfix-Location.
Die Folge: Ein Passwortschutz in
location /verwaltung/wird auf die Anfrage/verwaltung/index.phpnicht angewendet, denn diese Anfrage wird vonlocation ~ \.php$bearbeitet. Die Lösung besteht darin, die Location mit^~zu schreiben und die PHP-Location darin zu verschachteln (siehe das Beispiel im Abschnitt zur Zugriffsbeschränkung).
: Vergrößern -
PHP an PHP-FPM anbinden
In den meisten Installationen führt Apache PHP in sich selbst aus (mod_php). Nginx enthält kein PHP; es reicht
.php-Anfragen mitfastcgi_passan den getrennt laufenden Dienst PHP-FPM weiter.Nginxlocation ~ \.php$ { # Nicht an PHP-FPM senden, wenn die Datei nicht existiert try_files $uri =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Der Socket-Pfad hängt von Distribution und PHP-Version ab fastcgi_pass unix:/run/php/php-fpm.sock; }Die Zeile
try_files $uri =404;verhindert, dass eine nicht vorhandene.php-Adresse an PHP-FPM geschickt wird. Zu Socket-Pfad und Pool-Einstellungen siehe die Anleitung Nginx und PHP-FPM.
: Vergrößern
Entsprechungstabelle
| Aufgabe | Apache / .htaccess | Nginx |
|---|---|---|
| Front Controller | RewriteCond !-f, !-d + RewriteRule | try_files $uri $uri/ /index.php?$query_string; |
| HTTPS und www | RewriteCond %{HTTPS} + RewriteRule [R=301] | eigener server-Block + return 301 |
| Weiterleitung einer einzelnen Adresse | Redirect 301 | location = … { return 301 …; } |
| Saubere URL | RewriteRule … [L] | rewrite … last; oder eine location |
| Passwortschutz | AuthType Basic, AuthUserFile | auth_basic, auth_basic_user_file |
| IP-Beschränkung | Require ip | allow / deny |
| Verzeichnisauflistung | Options -Indexes | autoindex off; (standardmäßig ohnehin aus) |
| Fehlerseite | ErrorDocument | error_page |
| Cache-Header | mod_expires (ExpiresByType) | expires |
| Antwort-Header | Header set | add_header |
| PHP | mod_php | PHP-FPM + fastcgi_pass |
| PHP-Einstellung | php_value, php_flag | PHP-FPM-Pool-Einstellung oder .user.ini |
Front Controller
Die meisten PHP-Frameworks und Content-Management-Systeme leiten jede nicht vorhandene Adresse an die Datei index.php. Bei Apache geschieht das mit einer RewriteRule unter den Bedingungen „keine Datei, kein Ordner“:
RewriteEngine On
# Ist das Angeforderte keine echte Datei und kein echter Ordner, an index.php übergeben
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]Bei Nginx ist dieselbe Aufgabe eine einzige Zeile. try_files prüft nacheinander Datei und Ordner; gibt es beides nicht, wird die Anfrage an den letzten Wert übergeben:
root /var/www/beispiel.de/public;
index index.php index.html;
# Form 1: Die Anwendung liest den Pfad aus REQUEST_URI (die meisten Frameworks)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Form 2: Die Anwendung liest den Pfad aus einem Parameter (index.php?url=...)
# Verwenden Sie statt der obigen "location /" diese beiden:
#
# location / {
# try_files $uri $uri/ @app;
# }
# location @app {
# rewrite ^/(.*)$ /index.php?url=$1 last;
# }Liest Ihre Anwendung den Pfad aus einem Abfrageparameter (z. B. index.php?url=…), verwenden Sie die zweite Form im Beispiel. rewrite hängt die ursprüngliche Abfragezeichenfolge von selbst an die neue Adresse an (das Gegenstück zu QSA bei Apache).
Weiterleitung auf HTTPS und www
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.beispiel.de%{REQUEST_URI} [L,R=301]Bei Nginx schreibt man dafür keine Bedingung. Für jeden Namen, der weitergeleitet werden soll, wird ein eigener server-Block angelegt, der nur return 301 enthält; die eigentliche Website bleibt in ihrem eigenen Block:
# 1) Alles, was über HTTP eintrifft -> HTTPS + www
server {
listen 80;
server_name beispiel.de www.beispiel.de;
return 301 https://www.beispiel.de$request_uri;
}
# 2) HTTPS, aber ohne www -> www
server {
listen 443 ssl;
server_name beispiel.de;
ssl_certificate /etc/letsencrypt/live/beispiel.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/beispiel.de/privkey.pem;
return 301 https://www.beispiel.de$request_uri;
}
# 3) Die eigentliche Website
server {
listen 443 ssl;
server_name www.beispiel.de;
ssl_certificate /etc/letsencrypt/live/beispiel.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/beispiel.de/privkey.pem;
root /var/www/beispiel.de/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}Damit eine über HTTPS eintreffende Anfrage an beispiel.de weitergeleitet werden kann, braucht auch dieser Block ein gültiges Zertifikat. Zur Einrichtung des Zertifikats siehe die Anleitung HTTPS in Nginx.
Einzelne Adressen weiterleiten und saubere URLs
# Weiterleitung einer einzelnen Adresse
Redirect 301 /alte-seite.html https://www.beispiel.de/neue-seite
# Einen ganzen Bereich verschieben
RedirectMatch 301 ^/blog/(.*)$ https://www.beispiel.de/artikel/$1
# Saubere URL: /produkt/42 -> produkt.php?id=42
RewriteEngine On
RewriteRule ^produkt/([0-9]+)/?$ produkt.php?id=$1 [L,QSA]# Weiterleitung einer einzelnen Adresse
location = /alte-seite.html {
return 301 https://www.beispiel.de/neue-seite;
}
# Einen ganzen Bereich verschieben (Abfrageparameter bleiben erhalten)
location ~ ^/blog/(.*)$ {
return 301 https://www.beispiel.de/artikel/$1$is_args$args;
}
# Saubere URL: /produkt/42 -> /produkt.php?id=42
# Das Muster beginnt mit /; die ursprüngliche Abfragezeichenfolge wird von selbst angehängt
rewrite ^/produkt/([0-9]+)/?$ /produkt.php?id=$1 last;- Muster in der
.htaccesshaben keinen führenden Schrägstrich (^produkt/…); bei Nginx beginnt die Adresse immer mit/(^/produkt/…). Das ist die Einzelheit, die beim Übersetzen am häufigsten vergessen wird. - Wenn Sie nur weiterleiten möchten, verwenden Sie
return 301stattrewrite … permanent; das ist schlichter und besser lesbar. laststartet die Suche nach derlocationmit der neuen Adresse erneut; so erreicht/produkt.phpdie PHP-Location.- Müssen Sie Dutzende alter Adressen weiterleiten, ist eine Zuordnungstabelle mit der Direktive
mapübersichtlicher als eine eigenelocationfür jede Adresse.
Verzeichnisschutz, IP-Beschränkung und versteckte Dateien
# /verwaltung/.htaccess : Passwortschutz
AuthType Basic
AuthName "Panel"
AuthUserFile /home/beispiel/.htpasswd
Require valid-user
# /berichte/.htaccess : nur bestimmte IP-Adressen (Apache 2.4)
Require ip 203.0.113.10
Require ip 10.0.0.0/24
# .htaccess im Stammverzeichnis: Verzeichnisauflistung abschalten, Adressen mit führendem Punkt sperren
Options -Indexes
RewriteEngine On
RewriteRule (^|/)\.(?!well-known) - [F]# Dateien und Ordner mit führendem Punkt (.htaccess, .env, .git ...) sind gesperrt;
# .well-known bleibt für die Zertifikatsvalidierung offen. Vor die übrigen Locations mit regulärem Ausdruck schreiben.
location ~ /\.(?!well-known) {
deny all;
}
# Passwortschutz. ^~ : Locations mit regulärem Ausdruck (z. B. \.php$) werden nicht geprüft;
# deshalb wird die PHP-Location innen erneut definiert, und der Schutz umfasst auch .php-Dateien.
location ^~ /verwaltung/ {
auth_basic "Panel";
auth_basic_user_file /etc/nginx/.htpasswd;
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
# Nur bestimmte IP-Adressen
location ^~ /berichte/ {
allow 203.0.113.10;
allow 10.0.0.0/24;
deny all;
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
# Verzeichnisauflistung: standardmäßig ohnehin aus; die ausdrückliche Angabe ist optional
autoindex off;- Passwortdatei: Eine mit
htpasswderzeugte Datei lässt sich in den meisten Fällen auch mit Nginx verwenden. Prüfen Sie durch eine tatsächliche Anmeldung, ob das Hash-Verfahren der Passwörter unterstützt wird; legen Sie die Datei außerhalb des Web-Stammverzeichnisses ab. - IP-Beschränkung:
allowunddenywerden in der geschriebenen Reihenfolge ausgewertet; die erste passende Regel gilt. Steht vor der Website ein CDN oder ein anderer Proxy, sieht Nginx die IP-Adresse des Proxys und nicht die des Besuchers; solange die echte Adresse nicht eigens konfiguriert ist, wirkt die IP-Beschränkung nicht wie erwartet. - Verzeichnisauflistung: Bei Nginx ist
autoindexstandardmäßig ausgeschaltet; eine Entsprechung für die ZeileOptions -Indexesist nicht zwingend nötig. - Versteckte Dateien: Die Standardkonfiguration von Apache verbirgt Dateien, die mit
.htbeginnen, von selbst; bei Nginx gibt es keine solche Voreinstellung. Nach dem Umstieg lässt sich der Inhalt zurückgebliebener.htaccess-,.env- oder.git-Dateien als Klartext herunterladen. Fügen Sie unbedingt die Location hinzu, die Adressen mit führendem Punkt sperrt, und schreiben Sie sie vor die übrigen Locations mit regulärem Ausdruck. - „Deny from all“ in Unterordnern: Auch der
.htaccess-Schutz in Upload- oder Backup-Ordnern greift nicht mehr; schreiben Sie für jeden einelocation. Siehe Nginx-Sicherheitseinstellungen.
Fehlerseiten und Cache-Header
# Eigene Fehlerseiten
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
# Cache-Header (mod_expires)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/javascript "access plus 30 days"
ExpiresByType image/webp "access plus 90 days"
ExpiresByType image/jpeg "access plus 90 days"
</IfModule># Eigene Fehlerseiten
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# Cache-Header
location ~* \.(?:css|js)$ {
expires 30d;
}
location ~* \.(?:webp|jpg|jpeg|png|gif|svg|ico)$ {
expires 90d;
}Bei Fehlerantworten, die PHP erzeugt (etwa ein 404 aus der Anwendung), greift error_page nicht von selbst; dafür ist in der betreffenden Location fastcgi_intercept_errors on; erforderlich. Zu Cache-Dauer und Komprimierung siehe die Anleitung Caching und Komprimierung.
Zeilen mit php_value und php_flag
Zeilen mit php_value und php_flag in der .htaccess funktionieren nur mit mod_php. Nginx liest sie nicht, PHP-FPM ebenso wenig. Es gibt zwei Entsprechungen:
- PHP-FPM-Pool-Einstellung:
php_value[…]/php_flag[…]oderphp_admin_value[…]/php_admin_flag[…], die die Anwendung nicht überschreiben kann. Nach der Änderung wird PHP-FPM neu geladen. .user.ini: Liegt im Ordner der Website und erfordert kein Neuladen; sie gilt jedoch nur für Einstellungen, die auf Verzeichnisebene geändert werden dürfen, und da PHP die Datei in Abständen neu einliest (standardmäßig 300 Sekunden), ist eine Änderung möglicherweise nicht sofort sichtbar.
# Funktioniert nur mit mod_php; Nginx + PHP-FPM liest diese Zeilen nicht
php_value upload_max_filesize 32M
php_value post_max_size 32M
php_value memory_limit 256M
php_flag display_errors off; Möglichkeit 1: eine Datei .user.ini im Stammverzeichnis der Website
upload_max_filesize = 32M
post_max_size = 32M
memory_limit = 256M
display_errors = Off
; Möglichkeit 2: die PHP-FPM-Pool-Datei (z. B. www.conf; der Ort hängt von der Distribution ab)
; Einen mit php_admin_* gesetzten Wert kann die Anwendung nicht per ini_set() ändern
php_admin_value[upload_max_filesize] = 32M
php_admin_value[post_max_size] = 32M
php_admin_value[memory_limit] = 256M
php_admin_flag[display_errors] = offWenn Sie ein Upload-Limit übernehmen, denken Sie auch an die Nginx-Seite: Der Standardwert von client_max_body_size ist 1m; wird er nicht erhöht, werden große Uploads mit dem Fehler 413 abgewiesen, bevor sie PHP überhaupt erreichen.
Die Direktive „if“ und weitere Stolperfallen
ifist keine Bedingung wie in einer Programmiersprache. Innerhalb einerlocationlassen sich mitifnurreturnundrewritegefahrlos verwenden; zusammen mit anderen Direktiven kann es zu unerwarteten Ergebnissen kommen. StattRewriteCond-Zeilen eins zu eins inifzu übersetzen, fragen Sie zuerst: Lässt sich das mittry_files,return, einem eigenenserver- oderlocation-Block oder mitmaplösen? Meistens ja.- Unterschied in der Reihenfolge:
.htaccess-Regeln werden nacheinander abgearbeitet und beeinflussen einander; bei Nginx wird eine einzige Location gewählt. Die Regeln in derselben Reihenfolge untereinanderzuschreiben, führt nicht zum selben Ergebnis. - Vererbung: Direktiven wie
add_headerwerden nicht von der übergeordneten Ebene geerbt, sobald dieselbe Direktive auf der unteren Ebene steht. - Fertige Umwandlungswerkzeuge: Online-Konverter können einen brauchbaren ersten Entwurf liefern, ihre Ausgabe enthält aber häufig unnötige
if-Blöcke. Gehen Sie jede Zeile durch und stellen Sie sicher, dass Sie sie verstehen. - Die eigene
.htaccessder Anwendung: Fertige Software (Content-Management-Systeme, Frameworks) erzeugt bei der Installation eine.htaccessund kann sie bei Updates ändern. Entnehmen Sie die Nginx-Entsprechung dieser Regeln der Dokumentation der Software und prüfen Sie sie nach Updates erneut.
Testliste nach dem Umstieg
# Weiterleitungen: Statuscode und Location-Header
curl -sI http://beispiel.de/ | grep -i -E "^HTTP|^location"
curl -sI https://beispiel.de/ | grep -i -E "^HTTP|^location"
curl -sI https://www.beispiel.de/alte-seite.html | grep -i -E "^HTTP|^location"
# Versteckte Dateien: 403 oder 404 erwartet, kein Inhalt
curl -s -o /dev/null -w "%{http_code}\n" https://www.beispiel.de/.htaccess
curl -s -o /dev/null -w "%{http_code}\n" https://www.beispiel.de/.env
curl -s -o /dev/null -w "%{http_code}\n" https://www.beispiel.de/.git/config
# Passwortgeschützter Bereich: 401 erwartet (auch bei .php)
curl -s -o /dev/null -w "%{http_code}\n" https://www.beispiel.de/verwaltung/index.php
# Nicht vorhandene Adresse: 404
curl -s -o /dev/null -w "%{http_code}\n" https://www.beispiel.de/gibt-es-nicht- Startseite, eine Unterseite und eine Seite mit sauberer URL (z. B. Produkt, Artikel) lassen sich aufrufen.
http://und die Adresse ohne www führen in einem Schritt per 301 zur richtigen HTTPS-Adresse.- Weiterleitungen alter Adressen funktionieren; Abfrageparameter bleiben erhalten.
- Eine nicht vorhandene Adresse liefert 404 und die eigene Fehlerseite; eine nicht vorhandene
.php-Adresse ebenso. - Der Verwaltungsbereich fragt nach dem Passwort, auch bei
.php-Dateien. - Adressen wie
/.htaccess,/.envund/.git/configsind nicht erreichbar. - Im Upload-Ordner wird kein PHP ausgeführt; es erscheint keine Verzeichnisauflistung.
- Formularversand, Anmeldung und Datei-Upload (auch mit großer Datei) funktionieren.
- Statische Dateien kommen mit korrektem
Cache-ControlundContent-Typean. - Die Sicherheitsheader sind vorhanden (siehe Sicherheitsheader).
- In den Fehlerprotokollen von Nginx und PHP-FPM stehen keine unerwarteten Einträge.
Häufige Fragen
Kann ich meine .htaccess-Datei unverändert nach Nginx kopieren?
Nein. Nginx liest keine .htaccess-Dateien, und die Syntax ist eine andere. Die Entsprechung jeder Regel wird in die Serverkonfiguration geschrieben; die Datei selbst ist für Nginx eine gewöhnliche Textdatei, und der Zugriff darauf muss gesperrt werden.
Kann ich beim Shared Hosting selbst Nginx-Regeln schreiben?
In der Regel nicht; die Serverkonfiguration erfordert Administratorrechte. Manche Panels bieten dafür einen begrenzten Bereich oder betreiben Nginx vor Apache; in diesem Fall funktioniert die .htaccess weiterhin. Fragen Sie Ihren Hosting-Anbieter.
Funktioniert die .htaccess, wenn ich Nginx vor Apache einsetze?
Ja. Steht Nginx als Reverse Proxy davor und reicht die Anfragen an Apache weiter, wendet Apache die .htaccess-Regeln weiterhin an. Nur statische Dateien, die Nginx direkt ausliefert, durchlaufen diese Regeln nicht.
Muss ich für jede RewriteCond ein „if“ schreiben?
Nein; meistens ist das nicht nötig. Die Prüfung, ob eine Datei existiert, übernimmt try_files, Bedingungen zu Domain und HTTPS decken eigene server-Blöcke ab, adressabhängige Bedingungen die location. „if“ sollte nur zusammen mit return oder rewrite verwendet werden und nur, wenn es keinen anderen Weg gibt.
Nach dem Umstieg ist die Website langsam oder meldet 502. Wo sollte ich nachsehen?
Beginnen Sie mit dem Fehlerprotokoll von Nginx und dem Protokoll von PHP-FPM. Ein 502 bedeutet meist, dass PHP-FPM nicht läuft oder der Socket-Pfad falsch ist.
BYK Yazılım Support-Team
Diese Anleitung wird vom Support-Team von BYK Yazılım erstellt und regelmäßig überprüft. Letzte Aktualisierung: 04.10.2026.
Verwandte Anleitungen
- Nginx und PHP-FPM: So laufen PHP-Websites mit Nginxfastcgi_pass, SCRIPT_FILENAME, try_files, das Pool-Konzept, Socket-Berechtigungen und der Fehler 502.
- Nginx-Sicherheitseinstellungen: Ratenbegrenzung, Header, ZugriffsbeschränkungenRatenbegrenzung, Sicherheitsheader, Schutz versteckter Dateien und des Admin-Pfads sowie Anfragegrenzen in Nginx.
- HTTPS in Nginx: SSL-Zertifikat einrichtenZertifikat beziehen, auf HTTPS weiterleiten, HSTS, SSL-Terminierung und automatische Erneuerung in Nginx.
- 502, 504 und andere Nginx-Fehler: Ursachen und LösungenBedeutung, mögliche Ursachen, Diagnose über die Logs und Lösung für 502, 504, 413, 499, 403 und 404.
Sprechen wir über die Infrastruktur Ihrer Website
BYK Yazılım entwickelt Unternehmenswebsites. Schreiben Sie uns bei Fragen zu Ihrer Website.
Kontakt aufnehmen Unternehmenswebsite