2012/08/24
[apache2] 在NAT底下使不同網站共用80port
先說說我這邊的網路環境
VDSL小烏龜接ASUS-AP在分給兩台主機
![架構圖](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtLa8t8n3iXIp9VQMnpZHi7wKMkNH4Dh0EmdHQ1keBI6o8gjhkaJvtjNI5NLAfkCjpuT3gREkPDEW84AyLpH17vKtejgrs64DFaCsRH3eU4EsviasYQXHAEYaXDbaiXCf2mZ10q0YTzg/s1600/netstruct.png)
Server A的domain為 www.mydomain.tw
其底下有架設很多個virtualhost(play.mydomain.tw、cool.mydomain.tw)
Server B是我新的一台主機 預計給他的domain是ubuntu.mydomain.tw
從外部連到http://mydomain.tw會跑去Server A
現在Server B也要架一個Web(http://ubuntu.mydomain.tw)
由於Server A已經佔用了外部WAN IP(12.34.56.78)的80 port
(AP的NAT是設12.34.56.78:80給172.16.16.2:80)
所以如果直接在DNS上設定ubuntu.mydomain.tw的A紀錄或是CNAME紀錄到最後都會跑到Server A去
但又不想要設12.34.56.78:81給172.16.16.3:80
因為這樣瀏覽web時要加上port號(http://ubuntu.mydomain.tw:81)
這樣實在很醜
有沒有辦法可以做到我的需求:
瀏覽http://www.mydomain.tw會吐出Server A的這個virtualhost東西
瀏覽http://ubuntu.mydomain.tw會吐出Server B的這個virtualhost東西
那就是利用proxypass了
第一步驟先設定好你DNS的紀錄不管是A或CNAME都可以
是A的話把 ubuntu.mydomain.tw 設 12.34.56.78
是CNAME的話 ubuntu.mydomain.tw 設 www.mydomain.tw
(這部分不詳述)
再來就是重點了
在Server A的apache的設定檔要多設
```
<virtualhost *:80>
ServerName ubuntu.mydomain.tw
ProxyRequest Off # 這邊要為Off才安全
ProxyPreserve On
ProxyPass / http://ubuntu.mydomain.tw
ProxyPassReverse / http://ubuntu.mydomain.tw
</VirtualHost>
```
再來,由於Server A這台電腦也不知道ubuntu.mydomain.tw要如何解
所以必須要指定
Windows在C:\windows\system32\drivers\etc\hosts加上
```
172.16.16.3 ubuntu.mydomain.tw
```
Linux在/etc/hosts加上
```
172.16.16.3 ubuntu.mydomain.tw
```
Server B上的apache要把ServerName設為ubuntu.mydomain.tw喔
全部改完後不要忘記重起服務阿
一切正常後外部連連看http://ubuntu.mydomain.tw
應該就可以正常顯示Server B的網站囉
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言