我们希望使用docker容器nginx把虚拟网络zerotier中的主机服务映射但一个外网节点作为网络服务提供,简单来说就是通过https://example.com/appK能访问192.168.191.110:100K端口提供的服务
时间: 2024-11-06 13:24:54 浏览: 12
docker_starter:带有针对节点,mongo和nginx服务器的Compose Starter样板的Docker
在Docker环境中,要实现你的需求,可以按照以下步骤操作:
1. **创建Docker镜像**:
- 首先,确保你有一个包含Nginx配置文件的Dockerfile,它应该配置Nginx代理到内部的服务。例如:
```Dockerfile
FROM nginx:latest
COPY nginx.conf /etc/nginx/conf.d/default.conf
```
- 这里的`nginx.conf`需要配置成将请求从`/appK`路径转发到宿主机的`192.168.191.110:100K`。
2. **配置Nginx**: 在`nginx.conf`中添加反向代理规则,如:
```nginx
server {
listen 80;
server_name example.com;
location /appK/ {
proxy_pass http://192.168.191.110:100K;
proxy_set_header Host $host;
proxy_set_header X-For $proxy_add_x_forwarded_for;
}
}
```
3. **构建并运行Docker镜像**:
- 使用`docker build -t nginx-proxy .` 建立镜像,并指定标签为`nginx-proxy`.
- 然后运行容器,连接到zerotier网络(如果需要的话),并且暴露所需的端口:
```bash
docker run -d --network=zerotier_net -p 80:80 -p 443:443 -v /path/to/nginx/conf:/etc/nginx/conf.d nginx-proxy
```
`-v` 参数用于挂载Nginx配置文件到镜像内部。
4. **验证外部访问**:
- 从外网通过HTTPS访问`https://example.com/appK`,理论上应该能看到192.168.191.110:100K端口上服务的内容。
阅读全文