Laravel itinéraires derrière un proxy inverse
Ok, donc à des fins de développement, nous avons un serveur web dédié. Il n'est actuellement pas connecté directement à internet, j'ai donc installer un apache en reverse proxy sur un autre serveur, qui les transmet au serveur de développement.
De cette façon, je peux avoir accès au web server.
Le problème est, les routes dans Laravel sont maintenant préfixé avec l'intérieur de l'adresse IP du serveur, ou les serveurs de nom de l'ordinateur.
Par exemple, je vais à http://subdomain.test.com mais toutes les routes, généré à l'aide de la route()
helper, sont l'affichage de l'url suivante: http://10.47.32.22
et pas http://subdomain.test.com
.
Le reverse proxy est configuré en tant que tel:
<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>
J'ai mis le nom de domaine réel dans config\app.php
.
Question
Comment puis-je régler l'URL par défaut à utiliser dans le service de routage? Je ne veux pas en utilisant les adresses internes, parce que cela va à l'encontre du point de reverse proxy.
J'ai essayé en joignant tous mes itinéraires dans un Route::group(['domain' ...
groupe, qui ne fonctionne pas non plus.
OriginalL'auteur Phil Cross | 2015-04-28
Vous devez vous connecter pour publier un commentaire.
J'ai couru dans le même (ou un problème similaire), lorsqu'un Laravel 5 application n'a pas conscience d'être derrière un SSL équilibrage de charge.
J'ai le dessin suivant:
Que, toutefois, les causes de toutes les Url dans le code HTML sera généré avec http://schema.
Voici un rapide n'dirty solution de contournement pour faire ce travail, y compris le schéma (http vs https):
Placez le code suivant en haut de app/Http/routes.php
puis ajoutez la ligne suivante dans .env fichier:
Si vous avez aussi besoin de changer de schéma dans le code HTML généré à partir de http:// à https://, il suffit d'ajouter la ligne suivante:
Dans la dernière version de laravel
forceSchema
nom de la méthode a changé deforceScheme
et le code ci-dessus devrait ressembler à ceci:OriginalL'auteur TimeLord
Ok, donc je l'ai eu. J'espère que cela va aider quelqu'un dans le futur.
Il semble que Laravel ignore la
url
propriété dans leconfig\app.php
fichier pour les requêtes http (il ne fait état que c'est uniquement pour artisan), et il utilise à la place, soitHTTP_HOST
ouSERVER_NAME
fourni par apache pour générer le domaine des Url.De remplacer cette valeur par défaut, rendez-vous dans votre
routes.php
fichier et utiliser la méthode suivante:Ce sera ensuite l'URL générateur d'utiliser la nouvelle url à la place de la HTTP_HOST ou SERVER_NAME valeur.
OriginalL'auteur Phil Cross
Semble que le Laravel ont plus de solution pratique.. Vérifiez réponse: Comment puis-je configurer le protocole SSL avec Laravel 5 derrière un répartiteur de charge (ssl_termination)?
OriginalL'auteur Alex
Suivi de @TimeLord la solution:
Dans la dernière version de laravel le nom forcé de schéma a changé et maintenant c'est:
URL::forceScheme()
OriginalL'auteur Giorgi Ghughunishvili
Je sais que ce sujet est vieux.f mais j'ai résolu ce problème en remplaçant la ligne suivante dans mon DatabaseSessionHandler.pdf [@Éclairer/Session]:
Bien sûr, vous avez besoin de migrer la sesssion table et mis en place la configuration
(.env Variable SESSION_DRIVER=base de données)
OriginalL'auteur Fabus