2015-12-05 57 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不容易正確管理子目錄路徑。