Apache反向代理有时会接管所有请求

时间:2015-12-05 12:07:30

标签: apache websocket reverse-proxy mailcatcher

(我在服务器故障中发布了这个帖子,因为我没有得到任何响应,而且我们这里有很多apache专业人员)

我正在使用我的apache作为反向代理,以便对在内部端口上运行的Web服务器发出一些请求,以允许通过我的常规虚拟主机进行访问。这是在ubuntu 15上运行apache 2.4 in vagrant。

这是我的虚拟主机配置:

<VirtualHost *:80>
  DocumentRoot /vagrant/htdocs
  ServerName test.vm

  # proxy pass mailcatcher to internal webserver
  <Location /mailcatcher>
    ProxyPass http://localhost:1080
    ProxyPassReverse http://localhost:1080
  </Location>
  <Location /assets>
    ProxyPass http://localhost:1080/assets
  </Location>
  <Location /messages>
    ProxyPass ws://localhost:1080/messages
    ProxyPassReverse http://localhost:1080
  </Location> 

  <Directory />
    Require all granted
  </Directory>

  <Directory /vagrant/htdocs>
    AllowOverride all
  </Directory>
</VirtualHost>

有一段时间,这很好用。但是,过了一段时间,突然对此虚拟主机的所有请求都被代理到内部网络服务器。因此,如果我首先调用http://test.vm/cron/mails.php,它将按预期运行mails.php。但是,经过一段随机的时间或事件后,上述网址会突然开始提供Mailcatcher的回复。

  

您要查找的邮件不存在,或者没有此类内容

这是您在请求不再存在的消息时收到的Mailcatcher错误。

此服务Mailcatcher是从我的VM启动并一直运行的。奇怪的是,当我在虚拟机上做其他事情时,我不会遇到这个问题(那里有一个运行的网络应用程序)。只有当我主动调试邮件并使用Mailcatcher gui时,我突然有时会遇到这种情况。

等待一段时间或重新启动apache&#34;解决问题&#34;这个问题直到下次弹出。任何人都可以帮我解决这个问题吗?我的代理设置错了吗?

感谢。

1 个答案:

答案 0 :(得分:0)

你可以试试这些:

<VirtualHost *:80>
        ServerName mailcatcher.domain.tld

        ServerAdmin webmaster@domain.tld

        <Location />
                ProxyPass           http://localhost:1080/
                ProxyPassReverse    http://localhost:1080/
        </Location>
        <Location /messages>
                ProxyPass           ws://localhost:1080/messages
                ProxyPassReverse    ws://localhost:1080/messages

        </Location>


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

注意:

  • 当然localhost是在/ etc / hosts中设置的,或者应该更改为你的邮件服务器。
  • 将主机名专用于mailcatcher服务会更好。使用mod_proxy不容易正确管理子目录路径。