apache - Laravel routes behind reverse proxy -


ok, development purposes, have dedicated web server. it's not connected directly internet, i've setup apache reverse proxy on server, forwards development server.

this way, can web access server.

the problem is, routes in laravel being prefixed internal server ip address, or servers computer name.

for example, go http://subdomain.test.com routes, generated using route() helper, displaying following url: http://10.47.32.22 , not http://subdomain.test.com.

the reverse proxy setup such:

<virtualhost *:80>     servername igateway.somedomain.com      proxyrequests off     <proxy *>         order deny,allow         allow     </proxy>      proxypass / http://10.47.32.22:80/     proxypassreverse / http://10.47.32.22:80/     <location />         order allow,deny         allow     </location> </virtualhost> 

i have set actual domain name in config\app.php.

question

how can set default url use in routing? don't want using internal addresses, because defeats point of reverse proxy.

i've tried enclosing routes in route::group(['domain' ... group, doesn't work either.

i ran same (or similar problem), when laravel 5 application not aware of being behind ssl load-balancer.

i have following design:

  • client talks ssl load balancer on https
  • ssl load balancer talks back-end server on http

that, however, causes urls in html code generated http:// schema.

the following quick'n'dirty workaround make work, including schema (http vs. https):

place following code on top of app/http/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); } 

then add following line .env file:

proxy_url = http://igateway.somedomain.com 

if need change schema in generated html code http:// https://, add following line well:

proxy_schema = https