阿晨丶 2023-08-10 17:39 采纳率: 33.3%
浏览 8

docker容器 nginx容器代理

有三台docker主机分别部署了nginx,elk,Prometheus,
想通过nginx代理访问elk和Prometheus,怎么搞啊,

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-10 20:04
    关注

    【以下回答由 GPT 生成】

    解决方案

    要通过Nginx容器代理访问ELK和Prometheus容器,需要进行以下配置步骤:

    步骤1: 创建网络

    在三台Docker主机上创建一个共享的网络,以便容器之间可以进行通信。

    docker network create mynetwork
    

    步骤2: 配置ELK容器

    在每台Docker主机上,创建一个ELK容器,并将其连接到之前创建的网络上。

    docker run -d --name elk --network=mynetwork -p 5601:5601 -p 9200:9200 -p 5044:5044 sebp/elk
    

    步骤3: 配置Prometheus容器

    在每台Docker主机上,创建一个Prometheus容器,并将其连接到之前创建的网络上。

    docker run -d --name prometheus --network=mynetwork -p 9090:9090 prom/prometheus
    

    步骤4: 配置Nginx容器

    在每台Docker主机上,创建一个Nginx容器,并将其连接到之前创建的网络上。

    创建一个nginx.conf文件,用于配置Nginx代理规则。

    # 文件路径nginx.conf
    
    http {
        upstream elk {
            server elk:5601;
        }
        upstream prometheus {
            server prometheus:9090;
        }
    
        server {
            listen 80;
    
            location /elk/ {
                proxy_pass http://elk/;
            }
            location /prometheus/ {
                proxy_pass http://prometheus/;
            }
        }
    }
    

    在Dockerfile中创建一个Nginx容器,并将nginx.conf文件复制到容器中相应的位置。

    # 文件路径:Dockerfile
    
    FROM nginx
    COPY nginx.conf /etc/nginx/nginx.conf
    

    构建Nginx容器,并将其连接到之前创建的网络上。

    docker build -t mynginx .
    docker run -d --name nginx --network=mynetwork -p 80:80 mynginx
    

    步骤5: 配置主机文件

    在每台Docker主机上,修改/etc/hosts文件,将ELK和Prometheus的域名指向Nginx容器的IP地址。

    步骤6: 测试

    现在可以通过Nginx容器的IP地址和端口访问ELK和Prometheus容器。在浏览器中访问http://<Nginx_IP>/elk将访问ELK容器的Kibana界面,访问http://<Nginx_IP>/prometheus将访问Prometheus容器的控制台界面。

    请注意替换<Nginx_IP>为Nginx容器的实际IP地址。

    希望这些信息能对您提供帮助!如果您还有任何问题,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月10日