使用 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 配置
我正在尝试为我的 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 配置