Solución:
Me encontré con el mismo (o un problema similar), cuando una aplicación Laravel 5 no sabía que estaba detrás de un equilibrador de carga SSL.
Tengo el siguiente diseño:
- el cliente habla con un equilibrador de carga SSL a través de HTTPS
- El equilibrador de carga SSL habla con un servidor back-end a través de HTTP
Sin embargo, eso hace que todas las URL del código HTML se generen con el esquema http: //.
La siguiente es una solución rápida y sucia para que esto funcione, incluido el esquema (http frente a https):
Coloque el siguiente código encima de aplicación / Http / routes.php
En la última versión de laravel, use web / routes.php
$proxy_url = getenv('PROXY_URL');
$proxy_schema = getenv('PROXY_SCHEMA');
if (!empty($proxy_url)) {
URL::forceRootUrl($proxy_url);
}
if (!empty($proxy_schema)) {
URL::forceSchema($proxy_schema);
}
luego agregue la siguiente línea en .env expediente:
PROXY_URL = http://igateway.somedomain.com
Si también necesita cambiar el esquema en el código HTML generado de http: // para https: //, simplemente agregue la siguiente línea también:
PROXY_SCHEMA = https
En la última versión de laravel forceSchema
el nombre del método ha cambiado a forceScheme
y el código anterior debería verse así:
if (!empty($proxy_schema)) {
URL::forceScheme($proxy_schema);
}
Ok, lo tengo. Con suerte, esto ayudará a alguien en el futuro.
Parece que Laravel ignora la url
propiedad en el configapp.php
archivo para solicitudes http (indica que es solo para artesanos), y en su lugar usa HTTP_HOST
o SERVER_NAME
proporcionado por apache para generar el dominio para las URL.
Para anular esta URL predeterminada, vaya a su routes.php
archivo y utilice el siguiente método:
URL::forceRootUrl('http://subdomain.newurl.com');
Esto obligará al generador de URL a utilizar la nueva URL en lugar del valor HTTP_HOST o SERVER_NAME.
Parece que Laravel tiene una solución más conveniente. Verifique la respuesta allí: ¿Cómo configuro SSL con Laravel 5 detrás de un equilibrador de carga (ssl_termination)?