nginx: Authentifizierung wahlweise über IP oder HTTP-Auth

Wie beim apache lässt sich sich auch beim nginx eine IP whitelist mit einer HTTP Basic Authentication kombinieren.
Dabei muss entweder die IP des Benutzers whitelisted sein, oder er muss Benutzername und Passwort eingeben.

Continue reading nginx: Authentifizierung wahlweise über IP oder HTTP-Auth

HTTP Header mit tcpdump anzeigen

Wenn man den Web-Traffic zwischen einem Reverse Proxy (z.B. HAProxy) und einem Web Server (z.B. apache) zwecks Problemdiagnose analysieren will geht das nur mit tcpdump auf dem Web Server, da im Browser die HTTP Header, welche vom Reverse Proxy kommen nicht angezeigt werden.

Continue reading HTTP Header mit tcpdump anzeigen

nginx reverse-proxy per source IP

Es gibt Situationen da möchte man in einem nginx reverse-proxy die Requests je nach Client IP zu einem anderen Server umleiten. Nützlich ist das beispielsweise bei einer Server Migration, wo man nur eine handvoll interner IPs zuerst auf den neuen Server proxy-en kann und wenn alles läuft dann alle.

Die Option mit „if Statements“ sollte man dabei möglichst nicht verwenden. Und es gibt auch eine viel elegantere Option.

Continue reading nginx reverse-proxy per source IP

nginx: Location Pfad mit default redirect

Möchte man in nginx innerhalb einer Domain für einen Pfad einen neuen DocumentRoot definieren (z.B. für /app) und darin jede nicht existierende Datei auf index.html weiterleiten, geht dies mittels:

location /app {
  alias /srv/example.org/app;
  try_files $uri $uri/ /index.html =404;
}

Das selbe mit index.php unter Beibehaltung der Parameter:

location /app {
  alias /srv/example.org/app;
  try_files $uri $uri/ /index.php?$args =404;
}

Volles Beispiel:

server {
  listen 80;
  server_name example.org www.example.org;
  access_log /srv/example.org/logs/access_log;
  error_log /srv/example.org/logs/error_log;
 
  location /app {
    alias /srv/example.org/app;
    try_files $uri $uri/ /index.html =404;
  }
}

apache über reverse-proxy: Client IP anzeigen

Hat man vor einem apache Web-Server einen reverse-proxy (z.B. nginx) am laufen, sieht man statt der „echten“ IP des Besuchers, lediglich die IP des reverse-proxies.
Damit man im apache die tatsächliche IP des Bescuhers sieht kann man mittels mod_remoteip den Header vom reverse-proxy auslesen.
Continue reading apache über reverse-proxy: Client IP anzeigen