Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Lumen在反向代理后未检测到https_Php_Laravel_Ssl_Lumen - Fatal编程技术网

Php Lumen在反向代理后未检测到https

Php Lumen在反向代理后未检测到https,php,laravel,ssl,lumen,Php,Laravel,Ssl,Lumen,我在docker容器中的反向代理后面有一个Lumen API,它只在端口80上响应。因此,客户机请求某个域,一切正常 但是如果您想使用Request->secure()检查您是否使用http或https,lumen将返回false(=http)并生成错误的URL 我尝试使用URL::forceScheme(“https”)告诉lumen无论如何都要使用https,但lumen仍然坚持使用http 我不想在容器中安装证书只是为了让lumen相信https 有没有一个地方可以让我将lumen全局配置

我在docker容器中的反向代理后面有一个Lumen API,它只在端口80上响应。因此,客户机请求某个域,一切正常

但是如果您想使用
Request->secure()
检查您是否使用http或https,lumen将返回false(=http)并生成错误的URL

我尝试使用
URL::forceScheme(“https”)
告诉lumen无论如何都要使用https,但lumen仍然坚持使用http

我不想在容器中安装证书只是为了让lumen相信https

有没有一个地方可以让我将lumen全局配置为使用https而不是http


谢谢。

谢谢你,普顿。这正是正确的答案。Lumen使用了
Illuminate\Http\Request
,它扩展了
Symfony\Component\HttpFoundation
,包括
setTrustedProxies
方法

所以我基本上要做的是:

  • 创建一个设置可信代理的中间件
  • 使用我的受信任代理创建配置文件
  • 配置我的反向代理以转发正确的标头,这些标头是:

    • X_转发_协议=https
    • X_主机={HTTP_主机}
    • X_为{HTTP_客户端_IP}转发了_
    • X_转发_端口={服务器_端口}

  • 对于ssl,添加X_FORWARDED_PROTO=https或X_FORWARDED_PORT=443就足够了,因为这些是secure()方法要查找的值。一旦您添加它们并告诉lumen信任proxy,secure()将返回true。

    对于Laravel,有一个TrustedProxy.php配置文件,不确定lumen如何处理它