Ubuntu下Apache虛擬主機+反向代理

反向代理 就是通過一臺代理服務器,讓Internet用戶可以訪問到內部網絡上的服務器

下圖中192.168.0.4 可以理解帶有2個網卡,一個是公網ip,一個是192.168.0.4

代理內外中的2個服務器上的2個服務,分別是運行在9000端口和81端口

01)安裝 Apache2:
    sudo apt-get install apache2
    測試訪問:192.168.0.4


02)重啓服務器:
    sudo /etc/init.d/apache2 restart

   



03)虛擬主機+反向代理 配置:

    目標是:用安裝apache2的服務器ip 192.168.0.4 代理運行在192.168.0.15:9000上的tomcat服務器
    前提是:
    192.168.0.4安裝好了apache2並可以正常訪問
    192.168.0.15:9000也可以正常訪問

    啓用這幾個模塊
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
   
    啓用模塊   sudo a2enmod <model> 
    禁用模塊   sudo a2dismod <model> 

    上面提到的幾個啓動模塊命令如下
    sudo a2enmod proxy
    sudo a2enmod proxy_ajp
    sudo a2enmod proxy_balancer
    等等


/etc/apache2/sites-available/ 目錄中建立一個文件 test01

<VirtualHost *:80>
ServerName www.test01.com
ServerAlias test01.com
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.0.15:9000/
ProxyPassReverse / http://192.168.0.15:9000/
</VirtualHost>


然後執行 啓用這個站點
sudo a2ensite test01
service apache2 reload

/etc/apache2/sites-available/ 目錄中建立一個文件 test02

<VirtualHost *:80>
ServerName www.test02.com.cn
ServerAlias test02.com.cn
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.0.11:81/
ProxyPassReverse / http://192.168.0.11:81/
</VirtualHost>

然後執行 啓用這個站點
sudo a2ensite test02
service apache2 reload

修改C:\WINDOWS\system32\drivers\etc\hosts進行測試
192.168.0.4       test01.com
192.168.0.4       test02.com.cn

關閉一個虛擬站點
sudo a2dissite test01 
sudo a2dissite test02

 

04)Ubuntu的/etc/apache2目錄解釋:

    apache2.conf 核心配置文件,一般不需要修改!
    conf.d 目錄,裏面包含了一些字符集設置,文檔等設置!
    dav_svn.authz 和dav_svn.passwd 是前面做SVN時,相關權限、密碼文件。
    envvars 定義了運行時的用戶身份——www-data。
    httpd.conf 是Apache留給我們自己折騰的配置文件,默認爲空。apache2.conf 會加載這個文件。
    ports.conf 端口默認配置。apache2.conf 會加載這個文件。
    magic 爲mod_mime_magic模塊服務。
    mods-enabled 和mods-available mods-enabled 會被apache2.conf 加載,裏面包含*.load和*.conf文件。*.load文件中是加載相應的模塊(位於/usr/lib/apache2/modules/ 中),而*.conf中是對應的基本配置。但這些文件其實都是鏈接到mods-available 中相應的文件上。當我們通過a2enmod 操作時,實際上正是操作了這些軟鏈接。
    sites-available 和sites-enabled 與 mods-enabled 和mods-available 的關係類似,只是其中包含的是站點內容。

05)Ubuntu的Apache的配置文件解釋:

    Apache在啓動時會自動讀取/etc/apache2/apache2.conf的配置信息。
    而其他的一些配置文件,則是通過Include指令包含進來
    在apache2.conf中可以找到這些Include行:

        # Include module configuration:
        Include /etc/apache2/mods-enabled/*.load
        Include /etc/apache2/mods-enabled/*.conf
         
        # Include all the user configurations:
        Include /etc/apache2/httpd.conf
         
        # Include ports listing
        Include /etc/apache2/ports.conf

        # Include generic snippets of statements
        Include /etc/apache2/conf.d/
         
        # Include the virtual host configurations:
        Include /etc/apache2/sites-enabled/






06)配置錯誤:
    apache2"NameVirtualHost *:80 has no VirtualHosts"
     
    對於同一主機支持多個虛擬主機的情況,只需要命名一次NameVirtualHost,如果在每個虛擬主機配置文件中都加上NameVirtualHost *:80 ,則會報這個警告。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章