2015-12-05 27 views
0

(我是X-发布从serverfault这一点,因为我没有得到任何有反应,我们有很多的Apache的优点在这里)Apache的反向代理有时接管所有请求

我用我的apache作为一个向内部端口上运行的Web服务器的少量请求的反向代理,以允许通过我的常规虚拟主机进行访问。这是在ubuntu 15上运行apache 2.4的流浪汉。

这里是我的虚拟主机配置:

<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这项服务以我的虚拟机启动并始终运行。奇怪的是,当我在虚拟机上做其他事情时,我没有遇到这个问题(有一个在其上运行的Web应用程序)。只有当我正在积极调试邮件并使用Mailcatcher gui时,我才突然有时会遇到这种情况。

等待一段时间或重新启动apache“解决”这个问题,直到它下一次弹出。任何人都可以帮我解决这个问题吗?我是否设置了我的代理服务器?

谢谢。

回答

0

您可以尝试以下:

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

     ServerAdmin [email protected] 

     <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> 

注:

当然
  • 本地主机在您的/ etc/hosts中设置或应改变你mailcatcher服务器。
  • 将主机名专用于mailcatcher服务会更好。使用mod_proxy不容易正确管理子目录路径。