Laravel 5.x HTTPS反向代理的实现

时间:2021-11-10 19:42:43

需求

可针对多个域名设置HTTPS并指向到同一个项目。
最先考虑到的是通过nginx的反向代理来实现,最终测试发现效果并不完美。
示例如下:

server {
listen 127.0.0.1:8080;
root /path/to/application;
index index.html index.php;
...php config;
}
server {
listen 80;
listen 443 ssl;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host; # 设置Host
proxy_set_header X-Forwarded-For $remote_addr; # 设置请求源地址
proxy_set_header X-Forwarded-Proto $scheme; # 设置Http协议
... proxy header config;
}
...ssl config
}

实现后访问一般的接口是没有问题的,但是在项目内部由于认为请求协议是HTTP而不是HTTPS会导致通过框架生成的链接为HTTP协议。

解决方案

  1. 在Laravel 5.5.x 可通过参照官方文档 进行设置白名单
  2. 在Laravel 5.4.x 可通过安装插件设置代理白名单来实现