Nginx docker代理容器没有重定向?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx docker代理容器没有重定向?相关的知识,希望对你有一定的参考价值。
我正在尝试将以下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
。
当运行docker logs gogs-nginx-container
时,它只告诉我我尝试连接响应代码,即304s。我在运行vanilla nginx图像时将配置复制到我安装它的相同位置,所以它应该工作...
有关如何排除故障的任何想法?
在你的server_name
街区的server
是203.0.113.2
,你正试图访问172.17.0.3
。显然,它们不匹配,Nginx正在使用另一个server
块(可能是default
)来满足请求。
如果你能够坚持使用特定的IP,那么在server_name
中拥有IP可能就行了,它可以用于某些测试目的。
对于真实的网站,server_name
应该包含您的网站所在的域名。例如,
server_name 203.0.113.2 gogs.local gogs.com;
然后你应该利用DNS来建立域名和IP之间的关系。在最简单的形式,您的计算机上的hosts
文件可能为gogs.local
提供IP。
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
以上是关于Nginx docker代理容器没有重定向?的主要内容,如果未能解决你的问题,请参考以下文章
Dockerized Nginx将不同的子域重定向到同一页面
如何在 nginx docker elastic beanstalk中将http重定向到https