为什么Apache会不断更改我的主机名?

时间:2018-10-05 13:52:02

标签: django reverse-proxy

所以我有一个全部使用Apache和uWSGI和代理系统设置的Django应用程序服务器。一个小问题...有些事情一直在改变我的主机名!!!

它几乎类似于重写规则,但是我搜索了httpd.conf,但找不到适合的帐单。每当我发送HTTP URL时:

http://www.example.com/polls

Django从代理接收以下网址:

http://www.example.com/kpolls

真烦人!东西不断地把该死的k添加到我的主机名中,我也不知道该怎么办!请帮忙!

一些额外的信息:

到目前为止,我的代理非常简单:

ProxyPass "/"  "uwsgi://127.0.0.1:49152/var/run/app_name.sock"
ProxyPassReverse "/" "uwsgi://127.0.0.1:49152/var/run/app_name.sock"

(请确保尝试localhostwww.example.com。无效,因此主机名可以正确解析。)

在我看来,代理是在将请求交给Django之前对其进行了更改?

1 个答案:

答案 0 :(得分:0)

想通了!

原来是我在代理和.ini配置文件中使用UNIX套接字表示法。简而言之,我有以下内容:

ProxyPass "/"  "uwsgi://127.0.0.1:49152/var/run/app_name.sock"
ProxyPassReverse "/" "uwsgi://127.0.0.1:49152/var/run/app_name.sock"

我需要摆脱其中的一部分,使其看起来像这样:

ProxyPass "/"  "uwsgi://127.0.0.1:49152"
ProxyPassReverse "/" "uwsgi://127.0.0.1:49152"

因为我通过我的Apache uwsgi安装程序使用了mod_proxy_uwsgi协议,该协议自动将其链接到正在运行的uWSGI实例,但是完整的请求/路径通常映射到.sock文件在UNIX套接字方法中使用(哦,原来我的apache版本还不能处理unix://请求)。基本上,我使用的是UNIX套接字和uWSGI代理协议的某种奇怪的混合体,它混淆了服务器,并向每个GET请求中添加了错误的字母