ProxyPass und Rewrite - Nginx > Apache?

Paradise

New Member
Hi,

ich habe mir einen neuen Server aufgesetzt und verwende das erste mal Nginx.
Dabei bin ich auch das erste mal über ProxyPass gestolpert und möchte mir
das leben leichter machen.

Apache habe ich in Debian auf der Workstation virtuell laufen und benenne die Seiten normal so: clientdomain.local
Diese trage ich im Router DNS ein und muss so nur die TLD im Browser ändern um die live Seite zu haben.

Nun habe ich bei Schlund eine Subdomain angelegt die auf meine IP zu hause
geht und somit den Nginx Server aufruft.
Von dort möchte ich nun die Apache Seiten aufrufen ohne die Adressen ändern
zu müssen.

Also
subdomain.meinedomain.de/client1/
soll aufrufen
clientdomain.local

In habe ich nun
Code:
location ~ /client1/ {
    proxy_pass http://192.168.0.55;
    proxy_set_header Host $host;
}
Es verweist also auf die IP des Apache Servers und solange es einen Ordner
var/www/client1
gibt funktioniert zumindest schon mal die Startseite.

Es brächte also einen rewrite das das ganze dann so ausschaut im Browser
subdomain.meinedomain.de/clientdomain.local/
aber auf dem Apache eben alle links nur mit
clientdomain.local/
agieren.

Leider stehe ich mit rewrites schon immer auf Kriegsfuß.
Und wo macht man das dann am besten - schon in Nginx oder im Apache?
 
Der eine links und der andere rechts von mir :)

Also auf dem einen der von außen erreichbar ist über
"subdomain.meinedomain.de"
läuft Nginx.

Dieser soll nun bei Aufruf von
"subdomain.meinedomain.tld/irgendwas/"
eine Domain auf den Apache Server mit der
IP 192.168.0.55 anzeigen/aufrufen.

Dazu brauchts aber ja irgendeinen rewrite da die Seite aufm Apache
ja sonst aufgrund der URL nicht funktioniert?

"subdomain.meinedomain.tld/irgendwas/"
muss im hintergrund also zu
"apachedomain.tld/"
werden.
 
hi,

ich hab etwas ähnliches laufen. ungetestet:

Code:
location / {
  autoindex off;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto http;
  #proxy_set_header Cookie "PHPSESSID=$cookie_PHPSESSID";
  proxy_hide_header Pragma;
  proxy_set_header Cache-Control "";
  proxy_pass_header Set-Cookie;
  proxy_pass_header P3P;
  proxy_pass http://apachedomain.tld;
}
 
Hi magenbrot,

in deinem Fall gibts aber dann wohl einen DNS Eintrag.
Ich muss Nginx ja erst mal die IP des Apache mitteilen...
 
Es sollte schon reichen wenn du die IP in deine /etc/hosts einträgst. Hast du keinen Nameserver für dein Netz zuhause?
 
Das sind ja Dinge die ich vermeiden wollte - das ich an vielen stellen Einträge
vornehmen muss.

Bin schon froh das ich nun nen gescheiten Router auf den ich Tomato gemacht
habe hab. Da trage ich ja die test-domains in form von domain.local ein.
So muss ich schon mal nicht mehr in der Windows hosts rum fummeln.

Gibt doch sicherlich eine Möglichkeit dem proxy die IP mitzuteilen oder
was mir grade einfällt:
Vielleicht das "subdomain.meinedomain.tld/irgendwas/" als alias setzen
für "apachedomain.tld/"?
Ich finde zwar viele Beispiele aber jedes ist anders und bin noch nicht
dahinter gekommen wo man alles reinschreiben kann.
Da gibts bei Nginx wohl für alles 1000 Möglichkeiten.

Kann ich für eine URL mit selber Domain ein extra "server" aufmachen?
Also:
Code:
server {
  listen 443 ssl spdy;
  server_name subdomain.meinedomain.tld;
}

server {
  listen 443 ssl spdy;
  server_name subdomain.meinedomain.tld/irgendwas/;
}
 
Kann ich für eine URL mit selber Domain ein extra "server" aufmachen?

nein, das geht nicht. Wenn du mit Pfaden arbeiten willst nutze die location Direktive innerhalb des Server-Blocks.

Wie ich oben schon geschrieben habe, kannst du die Namensauflösung für diesen einen Fall auch über deine /etc/hosts Datei machen. Trag dort, wo nginx läuft einfach IP + Hostnamen deines Apache-Servers ein. Diesen Hostnamen kannst du dann auch in der nginx-config verwenden. (vorher per Ping testen, ob der name auch auflöst).
 
Back
Top