我正在尝试将以下 Nginx 反向代理配置烘焙到 docker 镜像中:
server {
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://203.0.113.1:3000;
}
}
我目前只是将其放入一个卷中并像这样映射它:
-v nginx-data:/etc/nginx/conf.d/
这是可行的,并且在启动时容器作为反向代理执行,但是当我像这样烘烤它时:
Dockerfile
FROM nginx
COPY gogs.conf /etc/nginx/conf.d/gogs.conf
从图像启动容器,如下所示:
docker run --name gogs-nginx-container -d gogs-nginx
最后通过指定的 IP 地址访问它,http://172.17.0.3/
我只是得到“欢迎使用 Nginx”页面,而不是看到它,并且它不会重定向到203.0.113.1:3000
.
关于如何解决这个问题有什么想法吗?
答案1
Nginx对其运行的IP地址“敏感”。在我的配置中,我有这样的server_name 203.0.113.2;
设置,因此容器启动时必须在该 IP 地址上启动,否则代理配置将不会触发。所以这个命令就达到了目的:
docker run --name gogs-nginx-proxy --net mk1net --ip 203.0.113.2 -d gogs-nginx