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

问题描述 投票:0回答:1

我在一个仅在端口80上响应的docker容器中的反向代理后面有一个Lumen API。因此,客户端请求某个域https://xyz.ab/api/endpoint,并且一切正常。

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

[我试图使用URL::forceScheme("https");告诉流明无论如何都使用https,但是流明仍然坚持使用http。

我不想只是为了让流明相信https而在我的容器中安装证书。

是否可以在全局配置流明以使用https而不是http?

谢谢。

php laravel ssl lumen
1个回答
0
投票

谢谢,PtrTon。那是正确的答案。流明使用Illumintae\Http\Request来扩展Symfony\Component\HttpFoundation,其中包括setTrustedProxies方法。

所以我基本上要做的是:

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

    • X_FORWARDED_PROTO = https
    • X_FORWARDED_HOST = {HTTP_HOST}
    • X_FORWARDED_FOR {HTTP_CLIENT_IP}
    • X_FORWARDED_PORT = {SERVER_PORT}

对于ssl,只需添加X_FORWARDED_PROTO = https或X_FORWARDED_PORT = 443就足够了,因为这些是secure()方法正在寻找的值。一旦添加它们并告诉流明信任该代理,secure()将返回true。

© www.soinside.com 2019 - 2024. All rights reserved.