CentOS伺服器apache綁定多個網域名稱的方法_Linux

來源:互聯網
上載者:User

Apache是最流行的HTTP伺服器軟體之一,其以快速、可靠(穩定)而著稱,並且可通過簡單的API擴充,Perl/Python解譯器可被編譯到伺服器中,完全免費,並且原始碼全部開放。如果有自己的伺服器或者VPS,並且不想為了方便而購買昂貴的控制台的話,那自己動手配置Apache就成了一門必修課了。下面簡單的介紹了如何通過設定Apache的http.conf檔案,進行多個網域名稱以及其相關的次層網域的綁定(假設我們要綁定的網域名稱是minidx.com和ntt.cc,次層網域是blog.minidx.com,獨立IP為72.167.11.30).

apache怎麼綁定多個網域名稱

開啟http.conf

1、ServerName 127.0.0.1 修改成ServerName 72.167.11.30

2、#NameVirtualHost *   修改成"NameVirtualHost 72.167.11.30"

3、在檔案最後面有虛擬機器主機格式:

#<VirtualHost *>#  ServerAdmin [email]admin@minidx.com[/email]#  DocumentRoot /www/httpd/html/minidx.com#  ServerName minidx.com#  ErrorLog logs/minidx.com-error_log#  CustomLog logs/minidx.com-access_log common#</VirtualHost>//簡單的添加:<VirtualHost 72.167.11.30> DocumentRoot usr/local/www/ ServerName  72.167.11.30</VirtualHost><VirtualHost 72.167.11.30> DocumentRoot usr/local/www/minidx.com/ ServerName  minidx.com</VirtualHost><VirtualHost 72.167.11.30> DocumentRoot  usr/local/www/ntt.cc/ ServerName  ntt.cc</VirtualHost>

 記錄檔的話也可以按照自己的路徑添加。

Apache如何添加次層網域 

httpd.conf 中需要開啟mod_rewrite功能(關於URL重新導向的具體說明,可以參照.htaccess使用方法總結),具體操作就是,在httpd.conf 的最後,添加以下內容: 

RewriteEngine on

RewriteMap lowercase int:tolower

RewriteMap vhost txt:/usr/local/etc/apache/vhost.map

RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$

RewriteCond ${vhost:%1} ^(/.*)$

RewriteRule ^/(.*)$ %1/$1 

其中的 /usr/local/etc/apache 是你的 apache 伺服器設定檔所在路徑,根據實際情況更改(例如在/etc/httpd/下面)。然後,在這個所在路徑的目錄下建立一個檔案: vhost.map,內容為: 

www.minidx.com /usr/local/www/minidx.com

www.ntt.cc /usr/local/www/ntt.cc

blog.minidx.com /usr/local/www/minidx.com/blog

 最後,在網站根目錄 /usr/local/www/下,建立對應目錄就可以了。如果需要增加,修改或者刪除網域名稱,子網域名稱,僅僅需要更改vhost.map檔案,而不用重啟apache進程。 

.htaccess使用方法總結

By Minidxer | January 26, 2008  

 在利用.htaccess的Rewrite規則實現Discuz論壇的偽靜態連結中已經提到過了.htaccess的重新導向的使用,這裡讓我們來比較全面的瞭解一下.htaccess吧。.htaccess是Apache伺服器的一個非常強大的分布式設定檔。正確的理解和使用.htaccess檔案,可以協助我們最佳化自己的伺服器或者虛擬機器主機。比如可以利用.htaccess檔案建立自訂的“404 error”頁面,更改很多伺服器的配置。而我們所需要做的,僅僅是在這個文字文件中添加幾條簡單的指令而已。   

Unix或Linux系統,或任何版本的Apache Web服務,都是支援.htaccess的,但是有的主機服務商可能不允許你自訂自己的.htaccess檔案。國外目前主流的虛擬機器主機供應商,幾乎全部都支援自訂功能。 

啟用.htaccess,需要修改httpd.conf,啟用AllowOverride,並可以用AllowOverride限制特定命令的使用

如果需要使用.htaccess以外的其他檔案名稱,可以用AccessFileName指令來改變。例如,需要使用.config ,則可以在伺服器設定檔中按以下方法配置:

AccessFileName .config

籠統地來說,.htaccess可以幫我們實現包括:檔案夾密碼保護、使用者自動重新導向、自訂錯誤頁面、改變你的副檔名、封鎖特定IP地址的使用者、只允許特定IP地址的使用者、禁止目錄列表,以及使用其他檔案作為index檔案等一些功能。 

●建立一個.htaccess文檔 

.htaccess是一個古怪的檔案名稱(從Win的角度來說,它沒有檔案名稱,只有一個由8個字母組成的副檔名,不過實際上它是linux下的命名,而很多linux下的東西,我們向來都會認為很古怪的),在Win系統中是不可以直接通過“建立”檔案來建立的,不過我們可以利用cmd中的copy來實現,比如copy sample.txt .htaccess。也可以先建立一個htaccess.txt,然後Ftp到伺服器,通過FTP來修改檔案名稱。

.htaccess的一個應用是

●自訂錯誤頁

自訂錯誤頁面,這將使你可以擁有自己的、個人化的錯誤頁面(例如找不到檔案時),而不是你的服務商提供的錯誤頁或沒有任何頁面。這會讓你的網站在出錯的時候看上去更專業。你還可以利用指令碼程式在發生錯誤的時候通知你(例如當找不到頁面的時候自動Email給你)。

你所知道的任何分頁錯誤代碼(像404找不到頁面),都可以通過在.htaccess檔案裡加入下面的文字將其變成自訂頁面:

ErrorDocument errornumber /file.html

舉例來說,如果我的根目錄下有一個notfound.html檔案,我想使用它作為404 error的頁面:

ErrorDocument 404 /notfound.html

如果檔案不在網站的根目錄下,你只需要把路徑設定為:

ErrorDocument 500 /errorpages/500.html

以下是一些最常用的錯誤:

401 - Authorization Required 需要驗證

400 - Bad request 錯誤請求

403 - Forbidden 禁止

500 - Internal Server Error 內部伺服器錯誤

404 - Wrong page 找不到頁面

接下來,你要做的只是建立一個錯誤發生時顯示的檔案,然後把它們和.htaccess一起上傳。 

●.htaccess命令

▼禁止顯示目錄列表

有些時候,由於某種原因,你的目錄裡沒有index檔案,這意味著當有人在瀏覽器地址欄鍵入了該目錄的路徑,該目錄下所有的檔案都會顯示出來,這會給你的網站留下安全隱患。

為避免這種情況(而不必建立一堆的新index檔案),你可以在你的.htaccess文檔中鍵入以下命令,用以阻止 

目錄列表的顯示:

Options -Indexes 

▼阻止/允許特定的IP地址

某些情況下,你可能只想允許某些特定IP的使用者可以訪問你的網站(例如:只允許使用特定ISP的使用者進入某個目錄),或者想封鎖某些特定的IP地址(例如:將低級使用者隔離於你的資訊版面外)。當然,這隻在你知道你想攔截的IP地址時才有用,然而現在網上的大多數使用者都使用動態IP地址,所以這並不是限制使用的常用方法。

你可以使用以下命令封鎖一個IP地址:

deny from 000.000.000.000

這裡的000.000.000.000是被封鎖的IP地址,如果你只指明了其中的幾個,則可以封鎖整個網段的地址。如你輸入210.10.56.,則將封鎖210.10.56.0~210.10.56.255的所有IP地址。

你可以使用以下命令允許一個IP地址訪問網站:

allow from 000.000.000.000

被允許的IP地址則為000.000.000.000,你可以象封鎖IP地址一樣允許整個網段。

如果你想阻止所有人訪問該目錄,則可以使用:

deny from all

不過這並不影響指令碼程式使用這個目錄下的文檔。 

▼替換index檔案

也許你不想一直使用index.htm或index.html作為目錄的索引檔案。舉例來說,如果你的網站使用PHP檔案,你可能會想使用 index.php來作為該目錄的索引文檔。當然也不必局限於“index”文檔,如果你願意,使用.htaccess你甚至能夠設定 foofoo.balh來作為你的索引文檔!

這些互為替換的索引檔案可以排成一個列表,伺服器會從左至右進行尋找,檢查哪個文檔在真實的目錄中存在。如果一個也找不到,它將會把目錄列表顯示出來(除非你已經關閉了顯示目錄檔案清單)。

DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm

▼重新導向(rewrite)

.htaccess 最有用的功能之一就是將請求重新導向到同站內或站外的不同文檔。這在你改變了一個檔案名稱,但仍然想讓使用者用舊地址訪問到它時,變的極為有用。另一個應用(我發現的很有用的)是重新導向到一個長URL,例如在我的時事通訊中,我可以使用一個很簡短的URL來指向我的會員連結。以下是一個重新導向檔案的例子:

Redirect /location/from/root/file.ext http: //minidx.com/new/file/location.xyz

上述例子中,訪問在root目錄下的名為oldfile.html可以鍵入: /oldfile.html

訪問一箇舊次級目錄中的檔案可以鍵入: /old/oldfile.html

你也可以使用.htaccess重新導向整個網站的目錄。假如你的網站上有一個名為olddirectory的目錄,並且你已經在一個新網站http: //minidx.com/newdirectory/上建立了與上相同的文檔,你可以將舊目錄下所有的檔案做一次重新導向而不必一一聲明:

Redirect /olddirectory http: //minidx.com/newdirectory

這樣,任何指向到網站中/olddirectory目錄的請求都將被重新指向新的網站,包括附加的額外URL資訊。例如有人鍵入:

http: //minidx.com/olddirecotry/oldfiles/images/image.gif

請求將被重新導向到:

http: //minidx.com/newdirectory/oldfiles/images/image.gif

如果正確使用,此功能將極其強大。

註:由於Windows Live Writer編輯這篇文章的時候,遇到http:// 就會自動添加超級連結,所以上面都特意加了一個空格,而這原本是沒有的。 

●密碼保護

儘管有各種各樣的.htaccess用法,但至今最流行的也可能是最有用的做法是將其用於網站目錄可靠的密碼保護。儘管JavaScript等也能做到,但只有.htaccess具有完美的安全性(即訪問者必須知曉密碼才可以訪問目錄,並且絕無“後門”可走)。

利用.htaccess將一個目錄加上密碼保護分兩個步驟。第一步是在你的.htaccess文檔裡加上適當的幾行代碼,再將.htaccess文檔放進你要保護的目錄下:

AuthName “Section Name”

AuthType Basic

AuthUserFile /full/path/to/.htpasswd

Require valid-user

你可能需要根據你的網站情況修改一下上述內容中的一些部分,如用被保護部分的名字”Members Area”,替換掉“Section Name”。

/full/parth/to/.htpasswd則應該替換為指向.htpasswd檔案(後面詳述該文檔)的完整伺服器路徑。如果你不知道你網站空間的完整路徑,請詢問一下你的系統管理員。

密碼保護的.htpasswd檔案

目錄的密碼保護比.htaccess的其他功能要麻煩些,因為你必須同時建立一個包含使用者名稱和密碼的文檔,用於訪問你的網站,相關資訊(預設)位於一個名為.htpasswd的文檔裡。像.htaccess一樣,.htpasswd也是一個沒有檔案名稱且具有8位副檔名的文檔,可以放置在你網站裡的任何地方(此時密碼應加密),但建議你將其儲存在網站Web根目錄外,這樣通過網路就無法訪問到它了。

建立好.htpasswd文檔後(可以通過文字編輯器建立),下一步是輸入用於訪問網站的使用者名稱和密碼,應為:

username:password

“password” 的位置應該是加密過的密碼。你可以通過幾種方法來得到加密過的密碼:一是使用一個網上提供的permade指令碼或自己寫一個;另一個很不錯的 username/passwordData Encryption Service是通過KxS網站,這裡允許你輸入使用者名稱及密碼,然後產生正確格式的密碼。對於多使用者,你只需要在.htpasswd文檔中新增同樣格式的一行即可。另外還有一些免費的指令碼程式可以方便地管理.htpasswd文檔,可以自動新增/移除使用者等。

當你試圖訪問被.htaccess密碼保護的目錄時,你的瀏覽器會彈出標準的username/password交談視窗。如果你不喜歡這種方式,有些指令碼程式可以允許你在頁面內嵌入username/password輸入框來進行認證,你也可以在瀏覽器的URL框內以以下方式輸入使用者名稱和密碼(未加密的):http://username:password@www.website.com/directory/

比較常用的基本上就是這些了,如果想更加具體的瞭解.htaccess的使用,那可以參照Appache的doc中相關的文檔。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.