apache/redhat 的 mod_proxy 不起作用

apache/redhat 的 mod_proxy 不起作用

我们有以下场景:

  • 第一个应用程序:http://example.com:8090/access/app1
  • 第二个APP:http://example.com:8090/access/app2

我们要配置 apache mod_proxy 来分配:

  • http://app1.example.com>>http://example.com:8090/access/app1
  • http://app2.example.com>>http://example.com:8090/access/app2

我们尝试了以下操作,但没有成功:

<VirtualHost app1.example.com:80>
      ServerName app1.example.com
      ProxyPass / http://example.com:8090/access/app1/
      ProxyPassReverse / http://example.com:8090/access/app1/
</VirtualHost>

<VirtualHost app2.example.com:80>
      ServerName app2.example.com
      ProxyPass / http://example.com:8090/access/app2/
      ProxyPassReverse / http://example.com:8090/access/app2/
</VirtualHost>

将其保存到/etc/httpd/conf.d/myconfig.conf,然后重新启动 apache sudo service http restart

使用浏览器并写入时,http://app1.example.com会出现默认的 Apache-Welcome-Page,但不会出现我们的 app1 页面。看来 mod_proxy 配置不起作用。

将错误级别设置为 DEBUG 将显示以下事件error_log

[2018 年 8 月 7 日星期二 14:18:04.748775] [autoindex:error] [pid 1985] [客户端 xxxx:58843] AH01276:无法提供目录 /var/www/html/:未找到匹配的 DirectoryIndex (index.html),并且 Options 指令禁止服务器生成的目录索引

任何帮助将不胜感激

答案1

按如下方式配置虚拟主机文件

<VirtualHost *:80>
      ServerName app1.example.com
      ProxyPass /app1 http://example.com:8090/access/app1/
      ProxyPassReverse /app1 http://example.com:8090/access/app1/
</VirtualHost>

<VirtualHost *:80>
      ServerName app2.example.com
      ProxyPass /app2 http://example.com:8090/access/app2/
      ProxyPassReverse /app2 http://example.com:8090/access/app2/
</VirtualHost>

答案2

两件事情:

1)注释掉或清空conf.d/welcome.conf文件(但不要删除它,否则下次修补httpd时它将被恢复

2) httpd -S 是考虑虚拟服务器问题时的好帮手。这将输出您的配置中虚拟主机的定义位置(以及哪些是默认的)

另外还有一个好处:我看到你正在使用端口 8090,这让我觉得你可能正在处理 Atlassian 产品。如果你正在使用带有 Synchrony 协作编辑组件的 Confluence,我或许可以为你提供一些 websocket 的配置(Atlassian 的文档在反向代理配置方面令人困惑)

相关内容