我有一台服务器,一台IP和多个网站。
我尝试做的是隔离所有网站,每个网站都在自己的docker容器中。
我需要什么,NGINX作为代理,每个网站都有一个Docker容器。
我尝试了类似的东西(在服务器上以root身份):
/ etc / hosts:
127.0.0.1 example.com
NGINX配置:
http {
upstream app-a {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://app-a;
proxy_redirect off;
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-Host $server_name;
}
}
}
泊坞:
docker run -d -p 3000:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
curl example.com
:
<title>Welcome to nginx!</title>
为什么我得到NGINX响应而不是Apache服务器响应?
如果我在Docker容器上连接,则启动Apache服务器:
sudo docker exec -i -t ID /bin/bash
curl 127.0.0.1
:
<html><body><h1>It works!</h1>
另外,在远程计算机(我的电脑)上,我让test.com指向我服务器的公共IP。如果我访问example.com,我会得到相同的NGINX响应。
还有一个问题:这是一个很好的方法,可以在docker容器上隔离/运行实时网站吗?或者我应该寻找其他VM解决方案吗?
提前致谢。
编辑:问题出在我的NGINX配置文件中。奇怪的是,我没有收到NGINX服务器的错误。
从
更改location \ {
到
location / {
现在工作正常。谢谢@Oliver Charlesworth。