去看看docker中的nginx配置,我们希望用nginx把虚拟网络zerotier中的主机服务映射但一个外网节点作为网络服务提供,简单来说就是通过https://example.com/appK能访问192.168.191.110:100K端口提供的服务
时间: 2024-12-20 12:30:58 浏览: 4
在Docker中配置Nginx以便从外部访问内部容器的服务通常涉及以下几个步骤:
1. 创建一个Nginx容器,并允许其访问内部的特定端口。首先,确保你在Dockerfile中安装了Nginx和zerotier客户端,例如:
```Dockerfile
FROM nginx:alpine
RUN apk add --no-cache zerotier-client
COPY nginx.conf /etc/nginx/conf.d/default.conf
```
同时,创建一个名为`nginx.conf`的文件,它应该包含类似这样的内容:
```bash
server {
listen 80; # 或者443如果需要HTTPS
server_name example.com;
location /appK {
proxy_pass http://localhost:100K;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# ... 其他Nginx配置
}
```
2. 在Docker-compose.yml或其他部署文件中,为Nginx和zerotier服务设置端口映射。假设你的zerotier主机服务名称是`app_k_container`:
```yaml
version: '3'
services:
nginx:
build: .
ports:
- "80:80"
- "443:443" # 如果需要HTTPS
depends_on:
- app_k_container
app_k_container:
image: your_app_k_image
container_name: app_k_container
networks:
- zerotier_network
ports:
- "100K:100K"
networks:
zerotier_network:
driver: bridge
attachable: true
ipam:
config:
- subnet: 192.168.191.0/24
```
3. 启动服务并连接到zerotier网络:
```sh
docker-compose up -d
```
现在,外界可以通过`https://example.com/appK`访问到192.168.191.110:100K端口的服务。
阅读全文