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

时间:2018-07-26 06:35:23

标签: docker nginx laravel-5 openssl nginx-reverse-proxy

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

我正在关注本教程: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在自己的沙箱中运行容器,因此,当容器在桥接网络中运行时,我们需要知道主机的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钥匙串中添加了创建的证书,并将其设置为“始终信任”。

当我在浏览器(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的请求

谢谢!

1 个答案:

答案 0 :(得分:0)

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