所謂的主機頭的叫法起自IIS中對域名綁定的功能,一般的web服務器一個ip地址的80端口只能正確對應一個網站,處理一個域名的訪問請求。但是我們可以通過綁定主機頭,在同一個ip和端口上,將不同的網站空間對應不同的域名,以連接請求中的域名字段來分發和應答正確的對應空間的文件執行結果。
舉個例子來說,一臺服務器ip地址爲192.168.1.10,有兩個域名和對應的空間在這臺服務器上,使用的都是192.168.1.10的80端口來提供服務。如果只是簡單的將兩個域名A和B的域名記錄解析到這個ip地址,那麼web服務器在收到任何請求時反饋的都會是同一個網站的信息,這顯然達不到要求。這時我們可以使用主機頭綁定域名A和B到他們對應的空間文件夾C和D。當含有域名A的web請求信息到達192.168.1.10時,web服務器將執行它對應的空間C中的首頁文件,並返回給客戶端,含有域名B的web請求信息同理,只不過解釋的是空間D的文件。所以在使用主機頭綁定功能後就不能使用ip地址訪問其上的任何網站了,因爲請求信息中不存在域名信息,所以會出錯。
因此,爲了防止域名解析惡意指向,我們需要禁止web服務器中默認的空主機頭,操作如下:
1.在apache環境中: vi /etc/httpd/conf/httpd.conf NameVirtualHost * <VirtualHost *:80> ServerAdmin yourmail#mail.com DocumentRoot /error ServerName abc.com </VirtualHost> <VirtualHost *:80> ServerAdmin yourmail#mail.com DocumentRoot "你的站點路徑" ServerName yourWebsite.com ServerAlias *.yourWebsite.com </VirtualHost> 2.在Nginx環境中: vi /usr/local/nginx/conf/nginx.conf #配置文件 找到server,添加下面這兩行: listen 80 default; #default代表默認虛擬主機 server_name _; 例如: server { listen 80 default; server_name _; return 500; #返回500錯誤信息 } 還可以把這些空的流量轉向到某一個網站,如下設置: server { listen 80 default; server_name _; rewrite ^(.*) http://某個網址permanent; #頁面重定向 } Windows環境中設置IIS主機頭 運行“inetmgr”進入IIS管理器,在站點屬性的“網站”標籤頁中,點開“網站標識”→“高級”,選中“此網站的多個標識”中的內容進行“編輯”,在“主機頭”那一項中填入此站點相應的域名,然後點擊確認並重啓服務即可。 Tomcat虛擬主機配置方案(域名解析)For Windows/Linux 一、打開tomcat安裝目錄下conf/server.xml這個文件 在server.xml文檔中找到 </Engine> </Service> 接着添加上面添加以下內容(暫時先說分爲三種方式): 第一種: <Host name="www.yovole.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="www" debug="0" reloadable="true" crossContext="true"/> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www_5sai_log." suffix=".txt" timestamp="true"/> </Host> 以上的內容就是在Tomcat的webapps目錄下新建一個www文件夾作爲www.yovole.com這個域名的主目錄 第二種: <Host name="www.yovole.com" debug="0" appBase="C:\\test\www" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="."/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www_yovole_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www_yovole_log." suffix=".txt" timestamp="true"/> </Host> 以上內容的意思就是在C盤test文件夾下面建立一個www文件夾作爲www.yovole.com這個 域名的主目錄 第三種,如果是linux系統的/var/www作爲www.yovole.com這個域名的主目錄的話內容如下: <Host name="www.yovole.com" debug="0" appBase="/var/www" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="."/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www_yovole_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www_yovole_log." suffix=".txt" timestamp="true"/> </Host> 再補充一種 <Host name="www.yovole.cn" debug="0" unpackWARs="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log/tomcat" prefix="www_yovole_access_log." suffix=".txt" pattern="common"/> <Logger className="org.apache.catalina.logger.FileLogger" directory="/var/log/tomcat" prefix="www_yovole_log." suffix=".txt" timestamp="true"/> <Context path="" docBase="/var/www" debug="0" reloadable="true"/> </Host> 域名www.yovole.cn的主目錄爲/var/www該站點的所有訪問LOG放在/ar/log/tomcat裏面 |