【问题标题】:How to map docker ip adress to Domain name如何将docker ip地址映射到域名
【发布时间】:2026-02-06 00:00:01
【问题描述】:

现在,我正在使用 tomcat docker 设置 AWS 服务器。

我已成功映射到 Namecheap 提供的域名,但不幸的是,我的网站仍然可以通过公共 IP 地址访问。

我想把ip地址重定向到域名。

我尝试设置主机文件,但没有成功。

例如 127.0.0.1 www.abc.com

【问题讨论】:

    标签: amazon-web-services docker tomcat


    【解决方案1】:

    您需要在您的域提供商设置中映射实例公共 IP,而不是 Docker 的本地 IP。

    • 将 docker 端口发布到主机 docker run -dit -p HOST_PORT:CONTAINER_PORT your_image
    • 允许实例安全组中的端口
    • 更新 DNS 以指向实例的公共 IP 地址

    更新:

    您需要在您的 EC2 机器上运行 Nginx,然后在 Nginx 配置中添加以下配置。

    在第二块试试这个:

    server {
        listen 80;
        server_name YOUR_INSTANCE_PUBLIC_IP;
    
        return 301 $scheme://www.abc.com$request_uri;
    }
    

    无法将127.0.0.1 重定向到www.abc.com,因为127.0.0.1 是本地IP,无法从EC2 外部访问。

    【讨论】:

    • 对不起,它没有按我的意愿工作。我希望访问网站时的公共IP地址自动重定向到域名。我用 AWS 做不到,互联网上的解决方案都没有。
    • 哦,我以为你想从 ec2 外部访问 Docker 表单?但是您想将 IP 重定向到没有意义的域
    • 实际上,这个解决方案有效,但我在设置 nginx 和 tomcat 服务器时遇到了一个问题,因为这两个在同一个端口 80 上运行。我可以做的任何事情都可以在不将 tomcat 更改为其他的情况下完成港口?谢谢老哥
    • 如果你在容器中运行 nginx,那么你使用docker run -it -p 8080:80 nginx 如果在外面按照这个tecmint.com/change-nginx-port-in-linux
    • 实际上,问题是,我使用 nginx 监听端口 80,我希望我的 tomcat 也运行在同一个端口 80 上。因此,通过这种方式,当用户访问我的网站时没有看到端口号。我尝试将 nginx 的默认端口更改为其他端口,但我检查了使用的端口,nginx 仍在使用该端口号。抱歉,这是我第一次使用 nginx。
    【解决方案2】:

    暴露 docker 容器端口:

    docker run --name awsContainer -p 80:8080

    -p 80(端口aws实例):8080(tomcat容器端口)

    【讨论】: