Nginx反向代理无法访问Docker主机。在Amazon(EC2)上托管 我要加载不同的应用程序,具体取决于位置。
nginx.conf
server {
listen 80 ;
server_name localhost;
location /web {
proxy_pass http://web:4000/;
}}
位置有效,这意味着nginx图像构建正确。
docker-compose文件
services:
web:
image: web
container_name: web
ports:
- 4000:4000
hostname: web
networks:
- default
nginx:
image: nginx
container_name: nginx
ports:
- 80:80
depends_on:
- web
networks:
- default
networks:
default:
external:
name: my-network
我希望 -当我输入url / web时,它应该显示来自Docker容器的应用程序
我尝试过
Run single container - works fine (web or nginx)
Added 127.0.0.1 web in /etc/hosts (I can do 'curl web' but it shows localhost response)
Added index index.html in location section
Added resolver in the location section
Use links instead of network
当“ docker-compose up”时,我可以检查docker容器(网络)并查看IP-192.168.10.2。然后curl 192.168.10.2
向我显示index.html。但是我无法使curl http://web:4000
的主机名似乎无法访问,但是我认为在proxy_pass中使用IP是一个错误的决定。
答案 0 :(得分:0)
我无法处理这些问题,因此我选择了另一种方法。
创建网络ipam
docker network create --gateway 172.20.0.1 --subnet 172.20.0.0/24 ipam
为docker-compose文件中的每个服务ipv4address分配了
networks:
default:
ipv4_address: 172.20.0.5 for web
where
networks:
default:
external:
name: ipam
在我的Web docker映像中为目录/ var / www / html添加chmod
chmod -R 755 /var/www/html
(如果您在Windows docker下构建LINUX容器,似乎需要执行此附加步骤)