最近接到一個業務,幫一家小公司規劃網路。
他們有一個以 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 這樣的功能。
可憐的 MIS 又來求救了...請問 Apache 有沒有轉址功能?
版主: Alex Tsai、cjtai、the real unknown
可憐的 MIS 又來求救了...請問 Apache 有沒有轉址功能?
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
ash nazg thrakatuluk agh burzum-ishi krimpatul.
Re: 可憐的 MIS 又來求救了...請問 Apache 有沒有轉址功能?
[quote="ulysses"]還被罵「不懂業務」
[/quote]
通常不懂的都會罵人不懂,所以算了吧
[/quote]
通常不懂的都會罵人不懂,所以算了吧
在 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>
----
在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.
Linux 不會很難架...我至少已經幫十家以上的公司架過 Linux 的 DNS/Mail/NAT 伺服器。
用 ip 分享器當然省錢又簡單,但是有個致命缺點:如果有郵件伺服器的話,會被垃圾信灌到死,搞到後來每個小時都要 Reset 一次。ip 分享器也不能針對來源、目的、協定和 TCP/IP SYN/ACK 等做細部的調整,說實話不是很夠用。
言歸正傳,如果他們的公司網站能放在 Windows 上的話,我就不用這麼傷腦筋了。當初幫他們弄公司網站的人已經人間蒸發了,沒有留下 Document,他們的說法是絕對「只能裝在 RedHat 上」。說實話我是半信半疑。不過在 Linux 上弄一個同樣的環境然後把東西原封不動烤過去很容易,要在 Windows 上這樣作...坦白說我沒啥信心。這個案子沒幾個錢,我不想幫他去 Trace 那些 PHP 程式。
Apache 的 vitual host 也只能針對“放在同一台機器上的網站”作 HTTP Request 名稱辨識,可是我現在是要跨機器執行。
用 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.
ash nazg thrakatuluk agh burzum-ishi krimpatul.
我想要找到同時做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內容。
您認為這個辦法如何?
在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內容。
您認為這個辦法如何?
to be or not to be.
謝謝您,這個問題我花了兩天膜拜偉大的 Google 大神,已經找到解決方法了,就是使用 Apache mod_proxy 模組作一個 R-Proxy。
您的提議我也提過,被否決了。否決的理由是
「使用者可以按右鍵另開視窗,這樣就會看到你後面的那些...你叫他什麼來著...GUI(註:CGI...)?然後他下次就會直接敲進去。」
在他們的思想中,8080 是給 Proxy 用的。
「這樣別人不都把我們這邊當成免費 Proxy 了嗎?」
可笑的是,我現在找到的解決方法才真的會讓他們這邊變成免費 Proxy。不過他們既然不認為 Proxy 可以用 80 Port,我也不必提。
真正可怕的,不是一無所知,而是一知半解...
您的提議我也提過,被否決了。否決的理由是
「使用者可以按右鍵另開視窗,這樣就會看到你後面的那些...你叫他什麼來著...GUI(註:CGI...)?然後他下次就會直接敲進去。」
在他們的思想中,8080 是給 Proxy 用的。
「這樣別人不都把我們這邊當成免費 Proxy 了嗎?」
可笑的是,我現在找到的解決方法才真的會讓他們這邊變成免費 Proxy。不過他們既然不認為 Proxy 可以用 80 Port,我也不必提。
真正可怕的,不是一無所知,而是一知半解...
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
ash nazg thrakatuluk agh burzum-ishi krimpatul.