【问题标题】:Apache runs wsgi module (django application) twice in case of public router ip and internal server ip?Apache 在公共路由器 ip 和内部服务器 ip 的情况下运行 wsgi 模块(django 应用程序)两次?
【发布时间】:2019-01-24 07:25:15
【问题描述】:

我们有以下网络设置 内部服务器ip:192.168.153.20:443 公共路由器ip:111.93.87.11:26060

我们在路由器中进行端口转发:111.93.87.11:26060 到 192.168.153.20:443

因此,当我们第一次访问 192.168.153.20:443(内部服务器 ip)时,它会运行/执行 django 应用程序(第一次) 现在,当我们访问 111.93.87.11:26060(公共路由器 ip)时 - 由于端口转发,它涉及内部服务器 ip,但是当 apache 收到 host:111.93.87.11:26060 时,apache 第二次执行/运行整个 django 应用程序。

所以最终我们的应用程序为 ip 运行了两次,即内部 ip 和公共路由器 ip。 这是一个非常关键的问题。 这可能是由于 Apache 配置造成的。 我们需要为内部和外部 IP 运行单个实例。但似乎 Apache 正在解析主机名并为新的外部 IP 运行不同的实例

供参考 Apache 配置附在 image

【问题讨论】:

  • 我们在开发中也面临同样的问题。请帮助解决这个问题。

标签: python django apache webserver wsgi


【解决方案1】:

实际上,我们必须在服务器名称中添加/提供公共 IP,因为当任何请求到达时,它会检查并匹配服务器名称,如果找到,那么它将执行相同的操作并传递我们必须使用 ProxyPass 的请求

使用 SSL 的最终公共路由器 ip 在 httpd-ssl.conf 文件中添加以下行

服务器名称 111.93.87.11 SSLEngine 开启 SSLProxyEngine 开启 SSLCertificateFile "/usr/local/vcs/cert/certs/DefaultServerCert_VCS.pem" SSLCertificateKeyFile "/usr/local/vcs/cert/certs/key/DefaultServerCert_VCS.key" ProxyPass "/" "https://192.168.153.120:443/"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    相关资源
    最近更新 更多