【问题标题】:NGINX Docker on Server with pre-existing NGINX on Ubuntu Server服务器上的 NGINX Docker 与 Ubuntu 服务器上预先存在的 NGINX
【发布时间】:2021-04-05 22:41:50
【问题描述】:

我目前遇到了一个问题,我的一个项目将在我的 Ubuntu 服务器上的 Docker 中运行,并使用 NGINX docker 容器来管理 Django 项目的反向代理。我遇到的问题是我已经在该特定 Ubuntu 服务器上运行了以前的 Django 项目,因此端口 80 已经被实际服务器上运行的 NGINX 块使用。

是否有一种解决方法来运行我的 Docker NGINX 以及 Ubuntu NGINX 并让我的 docker 映像作为“附加”站点运行,因为托管在那里的 Django 站点有客户网站,所以我不想干扰它们如果我不需要的话。

我的项目需要 HTTPS,因为它正在向在 Android APK 28 上运行的 React-Native 应用程序提供数据,由于某种原因,该应用程序具有阻止非 HTTPS 连接在应用程序中发生的安全规则。如果其他人遇到过这样的问题,我将非常感谢有关如何解决此问题的建议。

我曾尝试在 Docker 中使用端口 81 而不是端口 80 运行 NGINX,并且效果很好,但我认为没有办法与端口 81 建立安全连接吗?

提前致谢。

【问题讨论】:

    标签: django docker ubuntu nginx docker-compose


    【解决方案1】:

    您不能只使用端点的默认 HTTP 端口 - 用户浏览器默认使用 80 和 443。如果您更改这些,您的用户将不得不连接到your.server.com:81 或类似的东西。没有人会为公共服务器这样做,但这对于私人服务器来说是一种选择。

    我认为解决这个问题的合理方法是使用主机的 NGINX 将请求代理到 Docker 的 NGINX(如果有必要保留它的话)。您可以在主机的 NGINX 上处理 HTTPS 终止,并将纯 HTTP 传递给 Docker 的。

    另一个合适的选择是使用另一台服务器,这样一切都可以正常工作,而不会涉及到肮脏的黑客攻击。

    【讨论】:

    • 使用 URL 运行端口号应该没问题,因为在 Docker 上运行的 Django 应用程序是 React-Native 应用程序的后端。所以用户不应该浏览 Django 应用,只通过 React-Native 应用接收数据
    • 如果是这样,那么您可以使用任何端口,它只是一个数字。
    • @Blademaster680 只需将listen 443 ssl; 替换为listen 2443 ssl; 之类的内容,并在必要时调整应用中的链接。就是这样。
    • 完美,感谢您的意见,过去两天我一直在思考这个问题,哈哈。
    猜你喜欢
    • 2021-09-06
    • 1970-01-01
    • 2017-04-07
    • 2017-10-16
    • 2014-09-24
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    相关资源
    最近更新 更多