Laravel Routen, die hinter dem reverse proxy
Ok, also zum Zweck der Entwicklung, haben wir einen speziellen web-server. Es ist derzeit nicht direkt mit dem internet verbunden, also ich hab das setup ein apache-reverse-proxy auf einen anderen server übermittelt, auf dem Entwicklungs-server.
Diese Weise kann ich web-Zugriff auf den server.
Das problem ist, das die Routen in Laravel werden nun mit dem Präfix interne IP-Adresse des Servers oder die Server-computer-Namen.
Zum Beispiel, gehe ich auf http://subdomain.test.com aber alle Strecken, die mit Hilfe der route()
Helfer, zeigt die folgende url: http://10.47.32.22
und nicht http://subdomain.test.com
.
Den reverse-proxy-setup ist wie folgt:
<VirtualHost *:80>
ServerName igateway.somedomain.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /http://10.47.32.22:80/
ProxyPassReverse /http://10.47.32.22:80/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Ich habe den tatsächlichen domain-Namen in config\app.php
.
Frage
Wie kann ich die Standard-URL festlegen, um die Verwendung in routing? Ich will Sie nicht mit den internen Adressen, weil, die Niederlagen der Punkt des reverse-proxy.
Habe ich versucht, dass alle meine Routen in einem Route::group(['domain' ...
Gruppe, die nicht funktioniert entweder.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in das gleiche (oder ähnliches problem), wenn ein Laravel 5 Anwendung war nicht bewusst, dass hinter einem SSL-load-balancer.
Ich habe Folgendes design:
Dass jedoch bewirkt, dass alle URLs in den HTML-code generiert werden, die mit http://Schemas.
Folgende ist eine schnelle Lösung Abhilfe, um diese Arbeit machen, einschließlich das schema (http vs. https):
Platzieren Sie den folgenden code oben app/Http/routes.php
dann fügen Sie die folgende Zeile in .env Datei:
Wenn Sie auch zu ändern-schema in der generierten HTML-code aus http:// zu https://, fügen Sie einfach folgende Zeile als auch:
In der neuesten version von laravel
forceSchema
Methode name wurde geändert, umforceScheme
und der obige code sollte wie folgt Aussehen:Ok, so habe ich es. Hoffentlich hilft jemand in der Zukunft.
Scheint es, wie Laravel ignoriert die
url
Eigenschaft in derconfig\app.php
- Datei für http-Anfragen (es hat es nur für Handwerker), und es wird stattdessen entwederHTTP_HOST
oderSERVER_NAME
zur Verfügung gestellt von apache zu erzeugen, die domain für die URLs.Überschreiben diese Standard-url, gehen Sie zu Ihrem
routes.php
- Datei und verwenden Sie die folgende Methode:Diese dann zwingen Sie den URL-generator an die neue url statt der HTTP_HOST oder SERVER_NAME Wert.
Scheint die Laravel mehr convinient Lösung.. Check Antwort: Wie kann ich die SSL-Konfiguration mit Laravel 5 hinter einen load balancer (ssl_termination)?
Folgenden bis @TimeLord Lösung:
In der neuesten version von laravel die Namen für die erzwungene schema hat sich geändert und ist jetzt:
URL::forceScheme()
Ich weiß, das Thema ist alt.f aber ich habe die Lösung dieses Problem durch ersetzen Sie die folgende Zeile in meine DatabaseSessionHandler.pdf [@Illuminate/Session]:
Natürlich müssen Sie die Migration der sesssion-Tabelle und einrichten der config
(.env-Variable SESSION_DRIVER=Datenbank)