可憐的 MIS 又來求救了...請問 Apache 有沒有轉址功能?

冰果室與讀者的交流園地,只要是不屬於其他類別的話題,都可以在此處留言

版主: Alex Tsaicjtaithe real unknown

回覆文章
內容
發表人
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

可憐的 MIS 又來求救了...請問 Apache 有沒有轉址功能?

#1 文章 ulysses »

最近接到一個業務,幫一家小公司規劃網路。
他們有一個以 HTML + PHP + MySQL 的公司網站,以及公司的電子商務網站。
電子商務網站最近才請別人寫好,是用 ASP 寫的,放在 Windows 2K Server 上。
公司網站部分聽說是用到了一些 Linux Shell command 必須放在 RedHat 上。
(不要問我,都不是我寫的。那個電子商務簡直笑死人,XOOPS 都比它強)

看這一陣子病毒鬧這麼凶,想到要把 Windows 直接暴露在網路上簡直叫找死。
我想要用一台 RedHat Linux 裝兩張網卡架 iptables 防火牆,
並且裝上 Apache 來當公司網站的伺服器。
Windows 2K Server 則放在內部網路上,
預設閘道設定成 Linux 的內部網卡 IP。
可是問題來了,iptables 和 xinetd 都只能針對 Port mapping 來轉址,
對於 80 Port 的請求,都是丟給 Apache 負責服務,沒辦法把封包轉給 Windows。
電子商務部分改用 Port 8080 的提案被他們反對還被罵「不懂業務」
我知道用 Linux 外部網卡設定兩個真實 IP
然後配合 DNS 和 iptables DNAT 就可以達到目的。
可是現在 IP 就只有一個可用。

請問一下我有沒有辦法只用一個 IP 和一個 Port 達到轉址的目的?
例如說公司網站叫 www.exapmple.com
電子商務網站叫 shop.example.com,
有沒有辦法讓 Apache 看到 HTTP Request 的 ServerName 是 shop.example.com
就把請求轉址到 Windows 2K Server 上去?
也就是類似 iptables DNAT 這樣的功能。
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
Arthur
常吃冰
文章: 379
註冊時間: 05/01/2001 1:01 am
來自: .tw

Re: 可憐的 MIS 又來求救了...請問 Apache 有沒有轉址功能?

#2 文章 Arthur »

[quote="ulysses"]還被罵「不懂業務」
[/quote]

通常不懂的都會罵人不懂,所以算了吧
頭像
cjtai
冰果室水電工
文章: 2226
註冊時間: 04/19/2001 1:01 am
來自: dark side in the earth.
聯繫:

#3 文章 cjtai »

在 Apache 使用 Name Virtual Host,就可以1個ip設定多個Web Site,在不同的Web Site可以放不同的內容,其中的一個Site裡的index.html,就直接Redirect到您另外的Web Site。

在Apache httpd.conf的設定如下:(該改哪些,我應該不必註明吧!)
----
NameVirtualHost 111.222.111.222

<VirtualHost www.site1.com>
DocumentRoot /home/site1/public_html
ServerName www.site1.com
</VirtualHost>

<VirtualHost www.site2.com>
DocumentRoot /home/site2/public_html
ServerName www.site2.com
</VirtualHost>
----
to be or not to be.
頭像
cjtai
冰果室水電工
文章: 2226
註冊時間: 04/19/2001 1:01 am
來自: dark side in the earth.
聯繫:

#4 文章 cjtai »

重新看了您的問題,發現自己會錯意了! :oops:

如果為了安全架Linux當防火牆,我倒是覺得麻煩又花精神與錢!
不如直接買部可以多IP指向的IP分享器來當防火牆,還比較有效、方便。

公司網站當然也一併架在該Windows 2000的IIS上,做法和Apache的一樣。 :wink:
to be or not to be.
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

#5 文章 ulysses »

Linux 不會很難架...我至少已經幫十家以上的公司架過 Linux 的 DNS/Mail/NAT 伺服器。

用 ip 分享器當然省錢又簡單,但是有個致命缺點:如果有郵件伺服器的話,會被垃圾信灌到死,搞到後來每個小時都要 Reset 一次。ip 分享器也不能針對來源、目的、協定和 TCP/IP SYN/ACK 等做細部的調整,說實話不是很夠用。

言歸正傳,如果他們的公司網站能放在 Windows 上的話,我就不用這麼傷腦筋了。當初幫他們弄公司網站的人已經人間蒸發了,沒有留下 Document,他們的說法是絕對「只能裝在 RedHat 上」。說實話我是半信半疑。不過在 Linux 上弄一個同樣的環境然後把東西原封不動烤過去很容易,要在 Windows 上這樣作...坦白說我沒啥信心。這個案子沒幾個錢,我不想幫他去 Trace 那些 PHP 程式。

Apache 的 vitual host 也只能針對“放在同一台機器上的網站”作 HTTP Request 名稱辨識,可是我現在是要跨機器執行。
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
頭像
cjtai
冰果室水電工
文章: 2226
註冊時間: 04/19/2001 1:01 am
來自: dark side in the earth.
聯繫:

#6 文章 cjtai »

我想要找到同時做Domain與HTTP名稱解析的DAEMON可能不容易,依照您的需求我倒是還有個簡單的解決方法。

在NAT的Linux上,設定二個Name Virtual Host分別是www.exapmple.com,和電子商務用的shop.example.com。

www.exapmple.com應該不是什麼問題,我就不提了。

shop.example.com也是和www.exapmple.com一樣為Linux上的一個Apache Name Virtual Host,只是該Web Site的Web root只有一個內含單一frame的html檔。

該內含單一frame的html檔,將frame的內容轉至windows 2000 server的port 8080(或其他,但是就不能是port 80啦!),當然iptable要把該IP的 port 8080 mapping 到windows 2000 server上。

如此一來瀏覽器的網址列永遠是shop.example.com,而其實內容卻是隨frame的連結去跑windows 2000 server上port 8080的IIS內容。

您認為這個辦法如何? :wink:
to be or not to be.
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

#7 文章 ulysses »

謝謝您,這個問題我花了兩天膜拜偉大的 Google 大神,已經找到解決方法了,就是使用 Apache mod_proxy 模組作一個 R-Proxy。

您的提議我也提過,被否決了。否決的理由是

「使用者可以按右鍵另開視窗,這樣就會看到你後面的那些...你叫他什麼來著...GUI(註:CGI...)?然後他下次就會直接敲進去。」

在他們的思想中,8080 是給 Proxy 用的。

「這樣別人不都把我們這邊當成免費 Proxy 了嗎?」

可笑的是,我現在找到的解決方法才真的會讓他們這邊變成免費 Proxy。不過他們既然不認為 Proxy 可以用 80 Port,我也不必提。

真正可怕的,不是一無所知,而是一知半解...
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
頭像
cjtai
冰果室水電工
文章: 2226
註冊時間: 04/19/2001 1:01 am
來自: dark side in the earth.
聯繫:

#8 文章 cjtai »

ulysses 寫:謝謝您,這個問題我花了兩天膜拜偉大的 Google 大神,已經找到解決方法了,就是使用 Apache mod_proxy 模組作一個 R-Proxy。

...

在他們的思想中,8080 是給 Proxy 用的。

「這樣別人不都把我們這邊當成免費 Proxy 了嗎?」

...
1. 出動 Google 大神...一拜...再拜...三拜...

2. 所以這個經驗告訴我們,提案時記得別用一般人印象裡的常用Port NO. :wink:
to be or not to be.
回覆文章