Dinghy HTTP Proxy 项目使用教程
1. 项目介绍
Dinghy HTTP Proxy 是一个用于本地开发环境的 HTTP 代理和 DNS 服务器。它基于 jwilder 的优秀项目 nginx-proxy,并进行了修改以更适合本地开发工作。该项目的主要功能包括:
- HTTP 代理:自动将容器暴露的端口代理到 HTTP 端口。
- DNS 解析:默认情况下,将所有
*.docker
域名解析到 Docker VM。 - SSL 支持:支持使用单主机证书的 SSL。
- CORS 支持:允许跨域请求。
- Docker Compose 支持:自动生成基于 Docker Compose 项目的域名。
2. 项目快速启动
2.1 安装 Docker
确保你已经安装了 Docker。如果没有安装,请参考 Docker 官方文档进行安装。
2.2 启动 Dinghy HTTP Proxy
在终端中运行以下命令来启动 Dinghy HTTP Proxy:
docker run -d --restart=always \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
-v ~/dinghy/certs:/etc/nginx/certs \
-p 80:80 -p 443:443 -p 19322:19322/udp \
-e DNS_IP=127.0.0.1 \
-e CONTAINER_NAME=http-proxy \
--name http-proxy \
codekitchen/dinghy-http-proxy
2.3 配置 DNS 解析
在 macOS 上,创建一个文件 /etc/resolver/docker
,并添加以下内容:
nameserver 127.0.0.1
port 19322
2.4 启动你的应用容器
假设你有一个 Docker Compose 项目,启动你的应用容器:
docker-compose up -d
2.5 访问你的应用
现在,你可以通过 http://<service>.<project>.docker
访问你的应用。例如,如果你的项目名为 myapp
,服务名为 web
,则可以通过 http://web.myapp.docker
访问。
3. 应用案例和最佳实践
3.1 多主机配置
如果你需要为容器配置多个虚拟主机,可以在容器的环境变量中设置 VIRTUAL_HOST
,多个主机名用逗号分隔:
environment:
- VIRTUAL_HOST=foo.bar.com,baz.bar.com
3.2 SSL 支持
要启用 SSL,将你的证书和私钥放在 ~/dinghy/certs
目录下,文件名格式为 <virtual_host>.crt
和 <virtual_host>.key
。例如:
~/dinghy/certs/foo.bar.com.crt
~/dinghy/certs/foo.bar.com.key
3.3 CORS 支持
要启用 CORS,设置环境变量 CORS_ENABLED=true
,并可以指定 CORS_DOMAINS
来白名单特定域名:
environment:
- CORS_ENABLED=true
- CORS_DOMAINS=http://example.com,https://another.com
4. 典型生态项目
4.1 Docker Compose
Dinghy HTTP Proxy 与 Docker Compose 紧密集成,自动为每个 Docker Compose 项目生成域名,简化了本地开发环境的配置。
4.2 Nginx
Dinghy HTTP Proxy 基于 Nginx,提供了强大的反向代理功能,支持多种配置选项,如 SSL、CORS 等。
4.3 Docker Machine
如果你使用 Docker Machine 来管理 Docker 主机,Dinghy HTTP Proxy 可以无缝集成,提供一致的开发体验。
通过以上步骤,你可以快速启动并配置 Dinghy HTTP Proxy,享受本地开发环境的便利。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考