apache2反向代理node.js應用

在以前記錄的隨筆中,只是介紹了怎麼在apache2中使用proxy模塊,後來查到了一些資料,能夠經過下面網址查看配置塊的詳細參數信息php

http://man.ddvip.com/soft/apache2.0/sections.htmlhtml

在服務器上面部署node.js應用的時候我遇到了下面的問題:node

node.js應用監聽的是3000端口,使用反向代理能夠將80端口的全部請求代理到http://127.0.0.1:3000/去web

可是當對node.js作維護的時候,中止監聽3000端口是一個很好的選擇,可是若是這個時候有人訪問你的站點,該怎麼辦呢?apache

這個問題是前一段時間遇到的,知道昨天才真正下決心把它解決掉。服務器

ok,我開始尋找解決方式,觀察中止監聽3000端口時服務器返回的錯誤代碼是503,好了,有思路了,直接重定向503頁面就能夠了。ide

因而在Virtualhost *:80中添加了以下代碼,是的服務器訪問出現503錯誤的時候,跳轉到專有界面測試

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.localhost
    DocumentRoot "E:/phpworkspace/myblog"
    ServerName www.myblog.lc
    ServerAlias www.myblog.lc
    ErrorLog "logs/dummy-host2.localhost-error.log"
    CustomLog "logs/dummy-host2.localhost-access.log" common
    <Directory "E:/phpworkspace/myblog">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from All
    </Directory>
    #ProxyPass /article http://127.0.0.1:3000/article
    #ProxyPassReverse /article http://127.0.0.1:3000/article
    ErrorDocument 503 /index.html
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

  本覺得問題解決了,進行測試,服務器端中止監聽3000端口,訪問主機地址,結果出現的仍是503錯誤spa

因而又去查找資料,仔細看了反向代理的介紹以後,恍然大悟,原來上面設置的503 都會被轉到127.0.0.1:3000/index.html代理

但是我原來的應用下面就沒有index.html文件

因而就想 可否在node.js監聽的時候去訪問3000端口,若是發現沒有監聽也就是出現503錯誤的時候訪問的是apache默認的目錄結構下的頁面呢

因而終於找準了地方 在apache的默認www下建立error文件夾 在error裏面建立一個index.html文件 用來顯示503錯誤

因而上述配置文件信息修改成下面的內容

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.localhost
    DocumentRoot "E:/phpworkspace/myblog"
    ServerName www.myblog.lc
    ServerAlias www.myblog.lc
    ErrorLog "logs/dummy-host2.localhost-error.log"
    CustomLog "logs/dummy-host2.localhost-access.log" common
    <Directory "E:/phpworkspace/myblog">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from All
    </Directory>
    #ProxyPass /article http://127.0.0.1:3000/article
    #ProxyPassReverse /article http://127.0.0.1:3000/article
    ErrorDocument 503 /error/index.html
    ProxyPass /error/ ! 對error目錄不使用代理
    ProxyPass /error/e !
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

  ok,問題解決,這樣在服務器端沒有監聽3000端口的時候,服務器端會返回apache默認結構下的/error/index.html頁面

相關文章
相關標籤/搜索