【问题标题】:How to use Docker to run various web servers on default ports on one server?如何使用 Docker 在一台服务器的默认端口上运行各种 Web 服务器?
【发布时间】:2017-03-22 18:10:58
【问题描述】:

我的目标是让 Web 服务器在默认端口上运行,这样用户就不必输入端口号。使用 LAMP 堆栈很容易做到,其中 A 是 apache... 并且不存在其他 Web 服务器。但是,如果我使用 Centos 购买通用主机并且我想运行 1) Gunicorn/NGINX for Python/Django -> 从外部访问 example.com(网络浏览器不需要输入端口。 2) Java EE 容器中的 Spring 框架 - Java EE 默认使用端口 8080 和该范围内的其他端口,但人们只需输入一个域名并期望它可以工作。 -> 可以从 example2.com 访问 3) Node.js - 可从 example3.com 访问 4) PHP 应用程序,例如 WordPress、LAMP 上的 Drupal - example3.com

感谢您的建议。 例如,我最接近的经验是带有负载均衡器的 AWS,它允许从公共 Web 访问 - 应用程序服务器只能从负载均衡器访问。

谢谢, 布鲁斯

【问题讨论】:

  • 是的,代理/负载平衡器就是您想要的。

标签: java python django wordpress nginx


【解决方案1】:

您几乎可以使用前面的任何 http 服务器来完成这种工作。

将所有内容(tomcat、nodejs、gunicorn、uwsgi 等)绑定到本地 http 或文件套接字,并使用您喜欢的服务器的代理功能将它们全部捆绑在此主机上。使用 nginx 的命名:在一个 server 上使用不同的 locations 和/或具有正确 server names 的不同 server blocks设置为构建您的自定义主机。

几台服务器:

最后,选择哪种设置取决于您的特定需求(和经验)。

编辑:有点想念 docker - 但同样的事情适用于容器 - 除了你不使用文件套接字,而是在私有或公共网络中使用 (http) 套接字来制作所有内容。 p>

【讨论】:

  • 我想知道是否可以获得更多详细信息。因此,带有 mod_proxy 的 nginx 或 apache2 将用作负载均衡器(根据课程作者的说法,这就是 AWS 上最佳实践的描述方式)。无论如何,前面的代理侦听网页的默认端口 - 端口 80。不知何故,它重定向到正确的服务器或 docker 容器,具体取决于应用程序的类型(J2EE、NodeJS、gunicorn 或 uwisgi 用于 python web 应用程序) ?我如何才能了解更多关于这方面的信息 - 代理服务器,将请求定向到适当的服务器类型?
  • 基本上,我是在寻求有关在哪里了解更多信息的建议……书籍、在线培训等。
猜你喜欢
  • 2014-04-24
  • 2014-07-01
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多