docker 配置nginx服务 配置https 反向代理
时间: 2025-03-06 21:42:57 浏览: 38
### 配置 Docker 中 Nginx 服务以支持 HTTPS 反向代理
#### 准备工作
为了使 Ngins 支持 HTTPS 协议,在 Docker 容器内部署 Nginx 并将其设置为反向代理服务器前,需准备好 SSL/TLS 证书文件。这些可以由 Let's Encrypt 或者其他认证机构签发[^1]。
#### 创建自定义网络
为了让 Nginx 能够与被代理的服务通信,创建一个自定义桥接网络是必要的。这允许容器之间通过名称互相发现并连接。
```bash
docker network create mynetwork
```
#### 启动应用容器
假设有一个名为 `webapp` 的 Web 应用程序运行在一个单独的 Docker 容器里,并监听着8080端口,则应该如下方式启动它:
```bash
docker run -d --name webapp --network mynetwork -p 8080:80 some-web-app-image
```
#### 构建带有SSL配置的Nginx镜像
编写一份简单的 Dockerfile 来构建包含所需模块和支持 HTTPS 功能的 Nginx 映像:
```Dockerfile
FROM nginx:latest
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
COPY ./ssl/ /etc/nginx/ssl/
```
其中 `/etc/nginx/conf.d/default.conf` 是用于指定反向代理行为以及启用 SSL 加密传输的关键配置文件;而 `/etc/nginx/ssl/` 文件夹下放置的是之前准备好的私钥和公钥证书副本。
#### 编写 Nginx 配置文件
编辑 `./nginx.conf` ,确保其内容类似于下面这样:
```nginx
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass http://webapp:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
```
此段落描述了当请求到达位于主机上的特定域名时,会自动转发至同一网路内的 `webapp` 容器所暴露出来的 HTTP 接口上[^2]。
#### 运行 Nginx 容器
最后一步就是基于前面定制化的映像来实例化一个新的 Nginx 容器,并让它加入到先前建立的那个虚拟交换机当中去:
```bash
docker build -t custom_nginx .
docker run -d --name nginx-proxy --network mynetwork -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 443:443 custom_nginx
```
此时,已经成功设置了能够处理加密流量并通过 HTTPS 提供安全访问路径给后端应用程序的一个完整的解决方案[^3]。
阅读全文
相关推荐


















