docker配置nginx并实现反向代理

本文介绍了如何在Docker中配置Nginx作为反向代理。首先,通过`docker search`和`docker pull`获取Nginx镜像,并查看镜像列表。接着,创建Nginx容器,将关键目录挂载到主机对应目录。在主机的www目录下创建一个简单的HTML页面。然后,启动Tomcat容器,通过Nginx配置文件进行反向代理设置,将80端口请求转发到Tomcat的8080端口。最后,修改配置文件后重启Nginx,即可通过Nginx访问Tomcat应用,无需指定端口号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先再docker容器内搜索nginx,然后再拉取镜像

docker search nginx       

docker pull nginx

docker images   #查看镜像

2、创建nginx容器实例并将nginx的关键目录挂载到本机目录下面

docker run -d -p 80:80 --name nginx-web -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx

www: nginx存储网站网页的目录

logs: nginx日志目录

conf: nginx配置文件目录

3、查看容器

在主机的www文件夹下创建一个index.html页面,里面的内容就写一个简单的html页面

### 配置 DockerNginx 服务以支持 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值