使用 Docker 设置自签名 SSL 反向代理时无法在 Laravel 项目中加载资产

Can't load assets in Laravel project when setting up a self-signed SSL reverse proxy with Docker

我正在尝试为我的 dev Laravel 项目设置 HTTPS,因为我想使用 Facebook登录(现在 dev 环境也需要 HTTPS)

我正在学习本教程:https://medium.com/@oliver.zampieri/self-signed-ssl-reverse-proxy-with-docker-dbfc78c05b41

它基本上是这样说的:

创建自签名证书:

openssl req -subj '/CN=my-sitename.development' -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365

找到到主机的路径: Docker 运行s 容器在它们自己的沙箱中,因此,当容器 运行 在桥接网络中时,我们需要知道主机的 IP 地址是什么(如果我们路由到 localhost或者 127.0.0.1 我们将代理回容器,相反,我们需要路由到主机)

docker network inspect bridge

=> 这给了我们 172.17.0.1

现在创建 NginX 配置文件:

server {
    listen 443;

    # I've added this myself
    server_name my-sitename.development;

    ssl on;
    ssl_certificate /etc/nginx/conf.d/cert.pem;
    ssl_certificate_key /etc/nginx/conf.d/key.pem;

    location / {
        proxy_pass http://172.17.0.1;
    }
}

运行 Docker 容器

docker run --name nginx_proxy -d -v `pwd`:/etc/nginx/conf.d -p 443:443 nginx

最后但同样重要的是,我在我的 Mac 钥匙串中添加了我创建的证书并将其设置为 "always trust"。

当我在浏览器 (Chrome v67) 中打开我的 (https) 本地站点时,它告诉我证书有效并且网站正在运行(我可以看到我的站点文本等..) 除了资产。

资产请求如下所示: 我不认为这是正确的,但我不确定为 proxy_pass 配置输入什么(见上文)。为 proxy_pass 输入 my-sitename.development 无效。然后它将我重定向到 nginx_proxy docker 容器的默认 nginx 页面。

https://172.17.0.1/css/all.css

请注意:我有另一个 nginx docker 容器 运行 处理对 my-sitename.development:80

的请求

谢谢!

解决了! 毕竟不需要设置额外的 Docker 容器... 可以只编辑我现有 Docker 容器(处理 :80 连接)的 nginx 配置