【问题标题】:nginx reverse proxy to apache mod_wsgi django appnginx 反向代理到 apache mod_wsgi django 应用程序
【发布时间】:2019-08-09 04:32:58
【问题描述】:

一直在尝试这样做,但没有找到可行的方法。

我有一个通过 Apache 和 mod_wsgi 部署的 Django 应用程序。 Apache 监听 8080 端口,当我访问时一切正常

example.com:8080

我让 Nginx 在端口 80 上侦听为/ 的静态站点提供服务。

我正在尝试为 Apache (Django) 配置 Nginx 反向代理,以便当我访问 example.com/app 时,它应该将我带到 Django 应用程序。这是我目前的配置:

location /app/ {
                proxy_pass http://localhost:8080/;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }

我尝试在appproxy_pass 地址之后使用/不使用斜线。

但是,我总是收到 404 Not Found 错误。

有人可以帮我在 Nginx 中正确设置反向代理吗?

提前致谢

【问题讨论】:

  • 健全性检查:谁给出了 404 错误? Nginx 或 apache(如果你查看 apache 的日志,你会看到 404 错误)。第一个猜测是 nginx 在代理请求时没有剥离 /app ,但我总是必须仔细检查配置(并且通常发现反向代理更快乐,如果你将 /app 代理到后端 / 应用程序而不是后端,因为/)的假设
  • 嗨@Foon 感谢您的回复。 apache的日志中没有404错误。

标签: django apache nginx reverse-proxy mod-wsgi


【解决方案1】:
FORCE_SCRIPT_NAME='/app/'

在 settings.py 中添加它并重新启动 Django。该值应与 nginx 中的位置条目匹配才能正常工作。

【讨论】:

  • 嗨@Bimal 感谢您的回复。这不起作用,如果我进行此更改,则该应用在 example.com:8080 中无法正常运行(例如登录将无法正常工作)
  • 进行此更改后,应用程序预计只能通过 /app/ 位置下的 apache 运行。两种方式都行不通。
猜你喜欢
  • 2021-07-06
  • 2021-02-04
  • 2021-05-22
  • 2021-05-11
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
相关资源
最近更新 更多