2012-12-17 7 views
6

Ich habe einen Nginx-Server, der PHP-Anfragen bearbeitet, aber er ist so konfiguriert, dass er auf einem Nicht-Standard-Port (Port 12345 oder etwas) abhört. Ich kann den Listenport nicht ändern, weil die Unternehmens-IT "Nein" sagt.301 Redirect auf einem Nginx-Rechner, auf dem ein Nicht-Standard-Port hinter einem Proxy läuft

ein Proxy im Rechenzentrum ist die 12345.

Ich habe einige statische 301 umleitet, dass ich anstelle Anfragen von www.domain.com:80 zum nginx-Box auf Port leitet setzen müssen, aber Ich bekomme unerwartetes Verhalten.

Beispiel Umleitungen in site.conf "server {}" Block:

rewrite ^/foo$ /bar/foo/ permanent; 

Als ich nach www.domain.com/foo zu gehen versuchen, geschieht die Umleitung, aber es versucht, den Browser zu übermitteln zu www.domain.com:12345/bar/foo/

Meine Frage ist, wie kann ich Nginx erhalten, um den Benutzer zum korrekten Hafen umzuleiten (www.domain.com/bar/foo/)?

Vielleicht eine bessere Frage ist, was ist der richtige Weg zu tun, was ich frage? Es gibt 50+ Weiterleitungen, die hineingehen müssen, und ich würde lieber keinen "Standort" -Abschnitt für jede dieser Weiterleitungen erstellen.

Antwort

2

Sie können ein expliziteres Neuschreiben bereitstellen. Versuchen Sie Folgendes:

rewrite ^/foo/ $scheme://www.domain.com:80/bar$request_uri permanent; 

Ich habe angenommen, dass Sie ^/foo/ statt ^/foo$ zu verwenden, bedeutete da ^/foo$ ein sehr spezifischer Fall ist. Einfach nach Bedarf überarbeiten.

+1

Danke, Kevin. Ich meine wirklich ^/foo/weil es eine spezifische URL ist, auf die ich abziele (pro Marketing-Anfrage). Es funktioniert gut, und ich änderte es ein wenig: umschreiben ^/foo/$ scheme: // $ server_name: 80/bar/permanent; – Jason