2016-08-09 4 views
0

Ich habe eine Heroku-App mit Nginx um Reverse-Proxy zu einem anderen Heroku-App, die Wordpress läuft.Force Heroku-basierte Wordpress auf Port 80 mit Nginx auf Heroku

Nginx Buildpack: https://github.com/ryandotsmith/nginx-buildpack Wordpress Heroku Vorlage Ausgangspunkt: https://github.com/xyu/heroku-wp

Hier ist die Nginx Konfiguration für den Server und Reverse-Proxy:

server { 
    listen <%= ENV["PORT"] %>; 
    server_name _; 
    keepalive_timeout 15; 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://app_server; 
    } 

    location /locations/ { 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host [wordpress-app].herokuapp.com; 
     proxy_pass http://[wordpress-app].herokuapp.com/locations/; 
     proxy_redirect default; 
    } 
    } 

Das Reverse-Proxy funktioniert in den meisten Fällen, außer wenn Worpdress tut eine Weiterleitung.

Wenn ich [rails_app].herokuapp.com/locations/location1 besuche, versucht es, Proxy [wordpress_app].herokuapp.com/locations/location1 umzukehren. Wordpress leitet diese URL jedoch an [wordpress_app].herokuapp.com/locations/location1/ um (fügen Sie ein abschließendes '/' hinzu). Wenn Wordpress weiterleitet, versucht Nginx, zu [rails_app].herokuapp.com:[portnumber]/locations/location1 umzuleiten, wo die Portnummer der Dyno-Port ist. In dieser Situation möchte ich nicht, dass der Port in die URL eingefügt wird, weil er eine ungültige Adresse erstellt.

Ich glaube, dass das Problem durch die Änderung der Nginx-Konfiguration gelöst werden kann, aber ich hatte noch keinen Erfolg.

Antwort

0

Die Lösung bestand darin, port_in_redirect off; der Serverkonfiguration hinzuzufügen. Zum Beispiel:

server { 
    port_in-redirect off; 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://app_server; 
    } 
    } 
+1

nicht auf meinem Heroku arbeiten :( – moohkooh

+0

@moohkooh Können Sie Ihre ganze nginx Datei schreiben – adibble

+0

habe ich eine neue Ausgabe https://stackoverflow.com/questions/44586218/heroku-nginx- Auf-Port-80 – moohkooh