導航:首頁 > IDC知識 > apache基於域名虛擬主機配置

apache基於域名虛擬主機配置

發布時間:2021-01-14 08:11:35

1、apache 基於域名的虛擬主機 限制某個IP地址訪問

這個你可以在主機控制面板中的拒絕管理IP功能中設置,或者在.htaccess配置文件中添加相關的禁用IP代碼就可以了,當然有些程序也有相應的功能的,這個你在程序後台設置下就行了,如果不清楚的話可以去美國主機偵探論壇看看,上面討論這個方面的人還是比較多的。

2、如何配置 Apache 的虛擬主機

Apache 的虛擬主機就是在一台伺服器上運行多個網站,每個虛擬主機都可以綁定獨立的域名,為這些域名可以指定單獨的目錄,訪問這些域名的時候,Apache 會打開對應目錄裡面的東西。配置 Apache 的虛擬主機,只需要去修改 Apache 的配置文件。虛擬主機的英文是 virtual host,所以,Apache 配置虛擬主機的文件可能是 httpd.conf ,也可能是跟 virtual host 這個名字相關的文件,比如 vhost.conf ,具體要使用哪一個配置文件,需要自己去判斷。

3、如何設置apache的虛擬主機

Apache 配置虛擬主機三種方式

一、基於IP

1. 假設伺服器有個IP地址為192.168.1.10,使用ifconfig在同一個網路介面eth0上綁定3個IP:

[root@localhost root]# ifconfig eth0:1 192.168.1.11
[root@localhost root]# ifconfig eth0:2 192.168.1.12
[root@localhost root]# ifconfig eth0:3 192.168.1.13

2. 修改hosts文件,添加三個域名與之一一對應:

192.168.1.11   www.test1.com
192.168.1.12   www.test2.com
192.168.1.13   www.test3.com

3. 建立虛擬主機存放網頁的根目錄,如在/www目錄下建立test1、test2、test3文件夾,其中分別存放1.html、2.html、3.html

/www/test1/1.html
/www/test2/2.html
/www/test3/3.html


4. 在httpd.conf中將附加配置文件httpd-vhosts.conf包含進來,接著在httpd-vhosts.conf中寫入如下配置:


<VirtualHost 192.168.1.11:80>
ServerName www.test1.com
DocumentRoot /www/test1/
<Directory "/www/test1">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>

<VirtualHost 192.168.1.12:80>
ServerName www.test1.com
DocumentRoot /www/test2/
<Directory "/www/test2">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>

<VirtualHost 192.168.1.13:80>
ServerName www.test1.com
DocumentRoot /www/test3/
<Directory "/www/test3">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>

5. 大功告成,測試下每個虛擬主機,分別訪問www.test1.com、www.test2.com、www.test3.com

二、基於主機名

1. 設置域名映射同一個IP,修改hosts:

192.168.1.10  www.test1.com
192.168.1.10  www.test2.com
192.168.1.10  www.test3.com

2. 跟上面一樣,建立虛擬主機存放網頁的根目錄

/www/test1/1.html
/www/test2/2.html
/www/test3/3.html


3. 在httpd.conf中將附加配置文件httpd-vhosts.conf包含進來,接著在httpd-vhosts.conf中寫入如下配置:

為了使用基於域名的虛擬主機,必須指定伺服器IP地址(和可能的埠)來使主機接受請求。可以用NameVirtualHost指令來進行配置。 如果伺服器上所有的IP地址都會用到, 你可以用*作為NameVirtualHost的參數。在NameVirtualHost指令中指明IP地址並不會使伺服器自動偵聽那個IP地址。 這里設定的IP地址必須對應伺服器上的一個網路介面。

下一步就是為你建立的每個虛擬主機設定<VirtualHost>配置塊,<VirtualHost>的參數與NameVirtualHost指令的參數是一樣的。每個<VirtualHost>定義塊中,至少都會有一個ServerName指令來指定伺服哪個主機和一個DocumentRoot指令來說明這個主機的內容存在於文件系統的什麼地方。

如果在現有的web伺服器上增加虛擬主機,必須也為現存的主機建造一個<VirtualHost>定義塊。其中ServerName和DocumentRoot所包含的內容應該與全局的保持一致,且要放在配置文件的最前面,扮演默認主機的角色。

NameVirtualHost *:80
<VirtualHost *:80>  

ServerName *

DocumentRoot /www/ 

</VirtualHost>

<VirtualHost *:80>

ServerName www.test1.com

DocumentRoot /www/test1/

<Directory "/www/test1">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost> 

<VirtualHost *:80>

ServerName www.test2.com

DocumentRoot /www/test2/

<Directory "/www/test2">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

<VirtualHost *:80>

ServerName www.test3.com

DocumentRoot /www/test3/

<Directory "/www/test3">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

4. 大功告成,測試下每個虛擬主機,分別訪問www.test1.com、www.test2.com、www.test3.com

三、基於埠

1.修改配置文件

將原來的

Listen 80
改為
Listen 80
Listen 8080


2. 更改虛擬主機設置:

<VirtualHost 192.168.1.10:80>
DocumentRoot /var/www/test1/
ServerName www.test1.com
</VirtualHost>

<VirtualHost 192.168.1.10:8080>
DocumentRoot /var/www/test2
ServerName www.test2.com
</VirtualHost>

4、apache裡面可以在虛擬主機里邊設置虛擬目錄嗎?急,在線等!

可以 修改http.conf 文件就好
使用基於域名的虛擬主機
相關模塊 相關指令
core
DocumentRoot
NameVirtualHost
ServerAlias
ServerName
ServerPath
<VirtualHost>

為了使用基於域名的虛擬主機,你必須指定伺服器IP地址(和可能的埠)來使主機接受請求,這個可以用NameVirtualHost指令來進行配置。如果伺服器上所有的IP地址都會用到,你可以用"*"作為NameVirtualHost的參數。如果你打算使用多埠(如運行SSL)你必須在參數中指定一個埠號,比如"*:80"。請注意,在NameVirtualHost指令中指定IP地址並不會使伺服器自動偵聽那個IP地址。請參閱設置Apache使用的地址和埠一章獲取更多詳情。另外,這里設定的IP地址必須對應伺服器上的一個網路介面。

下一步就是為每個虛擬主機建立<VirtualHost>段。<VirtualHost>的參數與NameVirtualHost的參數必須是一樣的(比如說,一個IP地址或"*"代表的所有地址)。在每個<VirtualHost>段中,至少要有一個ServerName指令來指定伺服哪個主機和一個DocumentRoot指令來說明這個主機的內容位於文件系統的什麼地方。

取消中心主機(Mainhost)
如果你想在現有的web伺服器上增加虛擬主機,你必須也為現存的主機建造一個<VirtualHost>定義塊。這個虛擬主機中ServerName和DocumentRoot所包含的內容應該與全局的ServerName和DocumentRoot保持一致。還要把這個虛擬主機放在配置文件的最前面,來讓它扮演默認主機的角色。

比如說,假設你正在為域名www.domain.tld提供服務,而你又想在同一個IP地址上增加一個名叫www.otherdomain.tld的虛擬主機,你只需在httpd.conf中加入以下內容:

NameVirtualHost *:80

<VirtualHost *:80>

ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain

</VirtualHost>

<VirtualHost *:80>

ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain

</VirtualHost>

當然,你可以用一個固定的IP地址來代替NameVirtualHost和<VirtualHost>指令中的"*"號,以達到一些特定的目的。比如說,你可能會希望在一個IP地址上運行一個基於域名的虛擬主機,而在另外一個IP地址上運行一個基於IP的或是另外一套基於域名的虛擬主機。

很多伺服器希望自己能通過不只一個域名被訪問。我們可以把ServerAlias指令放入<VirtualHost>小節中來解決這個問題。比如說在上面的第一個<VirtualHost>配置段中ServerAlias指令中列出的名字就是用戶可以用來訪問同一個web站點的其它名字:

ServerAlias domain.tld *.domain.tld

這樣,所有對域domain.tld的訪問請求都將由虛擬主機www.domain.tld處理。通配符標記"*"和"?"可以用於域名的匹配。當然你不能僅僅搞個名字然後把它放到ServerName或ServerAlias里就算完了。你必須先在你的DNS伺服器上進行配置,將這些名字和您伺服器上的一個IP地址建立映射關系。

最後,你可以把其他一些指令放入<VirtualHost>段中,以更好的配置一個虛擬主機。大部分指令都可以放入這些<VirtualHost>段中以改變相應虛擬主機配置。如果您想了解一個特定的指令是否可以這樣運用,請參見指令的作用域。主伺服器(main server)范圍內的配置指令(在所有<VirtualHost>配置段之外的指令)僅在它們沒有被虛擬主機的配置覆蓋時才起作用。

這樣,當一個請求到達的時候,伺服器會首先檢查它是否使用了一個能和NameVirtualHost相匹配的IP地址。如果能夠匹配,它就會查找每個與這個IP地址相對應的<VirtualHost>段,並嘗試找出一個與請求的主機名相同的ServerName或ServerAlias配置項。如果找到了,它就會使用這個伺服器。否則,將使用符合這個IP地址的第一個列出的虛擬主機。

綜上所述,第一個列出的虛擬主機充當了默認虛擬主機的角色。當一個IP地址與NameVirtualHost指令中的配置相符的時候,主伺服器中的DocumentRoot將永遠不會被用到。所以,如果你想創建一段特殊的配置用於處理不對應任何一個虛擬主機的請求的話,你只要簡單的把這段配置放到<VirtualHost>段中,並把它放到配置文件的最前面就可以了。

5、apache 基於域名虛擬主機配置,本機上訪問 www.test.com指向 127.0.0.1/test

是修改這兩個文件沒錯,我測試成功,應該你是哪裡配置錯了,apache文件修改後要重啟。

一、hosts文件最下面換行添加:127.0.0.1 www.test.com;
註:
1、win 下 hosts文件路徑:C:\WINDOWS\system32\drivers\etc\hosts
2、綁定hosts,是為了訪問 www.test.com時,指向的IP是你自己的電腦;hosts文件綁定後,你可以用cmd ping命令,ping www.test.com,測試ping到的IP是不是你自己設置IP(127.0.0.1)

二、apache配置文件修改
1、打開apache配置文件httpd.conf,apache綁定網站路徑和域名www.test.com,保存;
2、重啟apache;註:修改apache配置文件後,必須重啟apache;
3、附apache配置文件默認路徑:C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf

6、apache配置基於域名的虛擬主機,為什麼用另一台訪問時,直接訪問IP與直接訪問域名得到不同結果。

建站三要素:域來名、空間源、程序
1、域名綁定到主機空間的IP地址(域名對應IP地址),默認我們在訪問域名時指向到主機空間的根目錄。
2、主機空間上傳程序,默認上傳到根目錄。
3、在瀏覽器中輸入域名(域名對應IP地址),安裝程序,配置資料庫、管理員信息等。用來管理程序後台。僅安裝一次
安裝成功後我們便可以訪問網站了。

7、apache可以實現 配置了基於域名的虛擬主機後ip還可以訪問嗎?

可以的設置的!
具體設置你可以在配置文件域名處建立別名用你的ip地址就行
不會設置的話,可以登陸智強站長論壇學習下!

8、apache怎麼配置localhost的虛擬主機

修改 hosts 文件
1
不管你用的是什麼系統,windows, mac,電腦上都會有一個 hosts 文件,修改這個文件,可以改變主機名所對應的 ip 地址。比如你安裝了 Web 開發環境(MAMP 或 WAMP),啟動環境以後,訪問 http://localhost 你就會打開環境的默認的目錄,這個 localhost 就是在 hosts 文件里定義的,它所指向的 ip 地址是 127.0.0.1 ,這個 ip 地址表示本地的你正在使用的這台電腦,了解詳細的內容,可以搜索一下 :)
修改這個 hosts 文件,我們可以手工的去指定任何主機名指向任何的 ip 地址,當然這個設置隻影響你自己的電腦,比如我們可以隨便造一個域名,比如 hello.com,讓這個域名指向你的電腦,也就是 127.0.0.1 這個 ip 地址。這樣你在瀏覽器中請求 hello.com ,打開的就是你在本地電腦上搭建的環境所指定的目錄里的東西。為了測試 apache 的虛擬主機功能,你可以去虛擬幾個這樣的域名,這樣在創建虛擬主機的時候,你可以讓這些域名打開各自的目錄。下面,我們先去修改這個 hosts 文件。
1. 找到 hosts 文件,windows 系統是在 Windows\System32\Drivers\etc 這個目錄下,Mac 系統是在 /etc/hosts ,找到以後可以使用文本編輯軟體打開它。
2. 在 hosts 文件里,新的一行上,先輸入 ip 地址 127.0.0.1 ,然後空格,再輸入一個主機名,這個主機名可以隨便,比如 hello.com ,這樣訪問 hello.com 就會打開在你的電腦上的網站了。另起一行,再去定義一條,127.0.0.1 hola.com 。
3. 保存修改之後的 hosts 文件,然後啟動在本地上的 Web 環境,打開瀏覽器,在地址欄上輸入 hello.com ,還有 hola.com ,看看打開的是不是你在本地上的內容。現在,你看到的應該跟你使用 http://localhost 打開的是一樣的東西。
END
配置 Apache 虛擬主機
現在,我們虛擬了兩個域名,讓它們指向了本地的電腦,訪問它們,打開的是同一個目錄里的內容,下面這個練習,我們通過修改 Apache 的配置文件,讓訪問不同域名的時候,打開的是不同的目錄。你首先要判斷一下配置 Apache 虛擬主機的配置文件,一般是在 httpd.conf 這個主配置文件裡面,不過,很多環境都會單獨把虛擬主機放在一個配置文件裡面,然後在 httpd.conf 文件里指定一下,包含這個單獨配置虛擬主機的文件。
1. 找到配置虛擬主機的配置文件,如果你用的是 WAMP 搭建的環境,先找到並打開 httpd.conf ,在這個文件里,搜索 # Virtual hosts ,它下面有一行代碼, #Include conf/extra/httpd-vhosts.conf... 你可以去掉它前面的 # ,這樣,Apache 啟動以後,也會去載入這個httpd-vhosts.conf 配置文件,這樣做的好處就是可以保持 Apache 相關設置的整潔。當然,你完全可以在主配置文件 httpd.conf 裡面去設置虛擬主機。
2. 打開 httpd-vhosts.conf 這個文件,沒有這個文件也可以去創建一個,或者直接在 httpd.conf 文件裡面去配置虛擬主機。配置虛擬主機的東西應該像這樣:

3. 應該有兩段這樣的代碼,每一段都是在配置一個虛擬主機,你可以復制其中的一段,然後粘貼到文件的最下面。再根據自己的需要去修改這段代碼。理解它的意思,ServerAdmin 就是網站的管理員的郵箱,DocumentRoot 是虛擬主機的主目錄,也就是訪問這個虛擬主機所打開的那個目錄,這個目錄你可以自己去指定,要注意的是,你需要先去創建這個目錄,然後再在這里去指定這個目錄的位置。ServerName 是主機名,比如之前我們虛擬的那個主機名 hello.com,ServerAlias 是主機的別名,你可以指定一個其它的主機名,訪問它的時候也會打開這個虛擬主機的目錄里的東西。ErrorLog 是錯誤的日誌,也就是發生錯誤的時候,會把錯誤記錄到哪個文件里。CustomLog 是虛擬主機訪問的日誌。
這樣自己新添加的虛擬主機看起來應該像這樣:

3
4. 在瀏覽器里打開 hello.com ,訪問的是這個虛擬主機的配置里 DocumentRoot 所指定的 /Applications/MAMP/htdocs/hello 這個目錄里的東西,你可以在這個目錄裡面放點東西,比如一個 WordPress 或者 Drupal 的網站等等。
註:配置虛擬主機的時候,第一個虛擬主機是默認的,你需要留著,配置自己的虛擬主機,可以從第二個開始配置,也就是第二段 <VirtualHost> 代碼。

與apache基於域名虛擬主機配置相關的知識