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