當前位置:首頁 » 操作系統 » linuxvhost

linuxvhost

發布時間: 2022-08-06 02:38:39

linux apache是否有正向代理

1. 正向代理
配置正向代理很簡單,此處我們配置vhost來實現代理, 只需要在瀏覽器的Proxy選項里加入你的Apache配置的vHost主機即可

1.1 開啟Apache代理模塊並引入vhost配置文件
早http.conf開啟代理模塊
LoadMole proxy_mole moles/mod_proxy.so
LoadMole proxy_connect_mole moles/mod_proxy_connect.so
LoadMole proxy_ftp_mole moles/mod_proxy_ftp.so
LoadMole proxy_http_mole moles/mod_proxy_http.so

引入vhost文件
Include conf/extra/httpd-vhosts.conf

如果你想監聽別的埠, 修改Listen參數
Listen 80
Listen 8087
Listen 8088

將想監聽的埠全都寫上,相應的, 在vhost文件里寫上
NameVirtualHost *:80
NameVirtualHost *:8087
NameVirtualHost *:8088

NameVirtualHost表示vhost匹配的請求的ip和埠那些會取掃描vhost
1.1 Apache配置 httpd-vhosts.conf(以Windows下為例)

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/www/test"
ServerName www.test.com
ServerAlias test.com
ErrorLog "logs/test.com-error.log"
CustomLog "logs/test.com-access.log" common
Alias /sublook "D:/www/test/look/sublook/"
<Directory "D:/www/test">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

#正向代理設置
ProxyRequests On
ProxyVia On

<Proxy *>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Proxy>
</VirtualHost>

先看
<VirtualHost *:80>

VirtualHost 後面的參數表示的是該VHost的IP/域名/和埠, 你可以寫 :
(1) IP: port, 例如 <VirtualHost 175.2.22.65:8088>, 訪問的時候通過IP訪問
(2) Domain, 例如 <VirtualHost www.test1.com>, 訪問的時候通過域名訪問, 也可以指定裡面的ServerName來指定域名
(3) *, 表示匹配所有對Apache監聽主機的請求, 只要是apache監聽到的請求都可以匹配該虛擬主機
此處表示的就是監聽所有80埠的請求, 但是由於ServerName里寫了www.test.com, 所以這個vhost匹配的是www.test.com:80,

現在看正向代理設置那一段
ProxyRequests On:開啟Apache正向代理
ProxyVia On:控制位於代理伺服器鏈中的代理請求的流向
引用Apache2.2官方文檔中對ProxyVia的解釋如下:

如果設置為默認值Off ,將不會採取特殊的處理。如果一個請求或應答包含"Via:"頭,將不進行任何修改而直接通過。
如果設置為On每個請求和應答都會對應當前主機得到一個"Via:"頭。
如果設置為Full ,每個產生的"Via:"頭中都會額外加入Apache伺服器的版本,以"Via:"注釋域出現。
如果設置為Block ,每個代理請求中的所有"Via:"頭行都將被刪除。且不會產生新的"Via:"頭。
<Proxy *>...</Proxy>:用來控制誰可以訪問你的代理
1 <Proxy *>
2 Order deny,allow
3 Deny from all
4 Allow from 127.0.0.1
5 </Proxy>

此處設置為本機可以使用代理,真正使用的時候就自己設置了

⑵ 在Linux下怎麼實現多個域名共用一個Ip

1、這個問題和linux系統沒關系
2、用webserver的虛擬主機vhost
3、apache實例
<VirtualHost 172.16.1.2>
DocumentRoot /opt/www1
ServerName dns1
.......
</VirtualHost>
<VirtualHost 172.16.1.2>
DocumentRoot /opt/www2
ServerName dns2
.......
</VirtualHost>
4、nginx實例
server{
listen 80;
server_name yourdomain1; #綁定域名
index index.html; #默認文件
root /opt/www; #網站根目錄
include proxy.conf; #調用其他規則
}
server{
listen 80;
server_name yourdomain2; #綁定域名
index index.html; #默認文件
root /opt/www; #網站根目錄
include proxy.conf; #調用其他規則
}

⑶ vhost虛擬主機系統是用來做功什麼的

是一套虛擬主機管理系統,免費的系統,聽說很不錯,不過好像是LINUX下的,不過我沒用過!不知道具體功能怎麼樣。

說白了就是配合你伺服器來做虛擬主機自動管理的產品。做虛擬追究應用很不錯!

⑷ linux下如何用apache配置兩個虛擬主機

可以使用基於IP地址的虛擬主機,也可以使用基於主機名的虛擬主機,建議使用後者。需要先配置DNS服務,使得能夠解析兩個名字,並且為兩個網站分別建立目錄。
下面是httpd.conf配置文件的例子:

nameVirtualHost 192.168.0.2

<VirtualHost 192.168.0.2>
DocumentRoot /var/www/site1
ServerName vhost1.yang.com
CustomLog logs/vhost1-access_log common
</VirtualHost>

<VirtualHost 192.168.0.2>
DocumentRoot /var/www/site2
ServerName vhost2.yang.com
CustomLog logs/vhost2-access_log common
</VirtualHost>

⑸ 為什麼linux系統安裝virtualbox後不能創建僅主機網路

VirtualBox的提供了四種網路接入模式,它們分別是:
1、NAT 網路地址轉換模式(NAT,Network Address Translation)
2、Bridged Adapter 橋接模式
3、Internal 內部網路模式
4、Host-only Adapter 主機模式

第一種 NAT模式
解釋:
NAT模式是最簡單的實現虛擬機上網的方式,你可以這樣理解:Vhost訪問網路的所有數據都是由主機提供的,vhost並不真實存在於網路中,主機與網路中的任何機器都不能查看和訪問到Vhost的存在。
虛擬機與主機關系:
只能單向訪問,虛擬機可以通過網路訪問到主機,主機無法通過網路訪問到虛擬機。
虛擬機與網路中其他主機的關系:
只能單向訪問,虛擬機可以訪問到網路中其他主機,其他主機不能通過網路訪問到虛擬機。
虛擬機與虛擬機之間的關系:
相互不能訪問,虛擬機與虛擬機各自完全獨立,相互間無法通過網路訪問彼此。
IP:10.0.2.15
網關:10.0.2.2
DNS:10.0.2.3
一台虛擬機的多個網卡可以被設定使用 NAT, 第一個網卡連接了到專用網 10.0.2.0,第二個網卡連接到專用網路
10.0.3.0,等等。默認得到的客戶端ip(IP
Address)是10.0.2.15,網關(Gateway)是10.0.2.2,域名伺服器(DNS)是10.0.2.3,可以手動參考這個進行修
改。
NAT方案優缺點:
筆記本已插網線時: 虛擬機可以訪問主機,虛擬機可以訪問互聯網,在做了埠映射後(最後有說明),主機可以訪問虛擬機上的服務(如資料庫)。
筆記本沒插網線時: 主機的「本地連接」有紅叉的,虛擬機可以訪問主機,虛擬機不可以訪問互聯網,在做了埠映射後,主機可以訪問虛擬機上的服務(如資料庫)。

第二種 Bridged Adapter模式
解釋:
網橋模式是我最喜歡的用的一種模式,同時,模擬度也是相當完美。你可以這樣理解,它是通過主機網卡,架設了一條橋,直接連入到網路中了。因此,它使得虛擬機能被分配到一個網路中獨立的IP,所有網路功能完全和在網路中的真實機器一樣。
虛擬機與主機關系:
可以相互訪問,因為虛擬機在真實網路段中有獨立IP,主機與虛擬機處於同一網路段中,彼此可以通過各自IP相互訪問。
虛擬機於網路中其他主機關系:
可以相互訪問,同樣因為虛擬機在真實網路段中有獨立IP,虛擬機與所有網路其他主機處於同一網路段中,彼此可以通過各自IP相互訪問。
虛擬機於虛擬機關系:
可以相互訪問,原因同上。
IP:一般是DHCP分配的,與主機的「本地連接」的IP 是同一網段的。虛擬機就能與主機互相通信。
筆記本已插網線時:(若網路中有DHCP伺服器)主機與虛擬機會通過DHCP分別得到一個IP,這兩個IP在同一網段。 主機與虛擬機可以ping通,虛擬機可以上互聯網。
筆記本沒插網線時:主機與虛擬機不能通信。主機的「本地連接」有紅叉,就不能手工指定IP。虛擬機也不能通過DHCP得到IP地址,手工指定IP後,也無法與主機通信,因為主機無IP。
這時主機的VirtualBox Host-Only Network 網卡是有ip的,192.168.56.1。虛擬機就算手工指定了IP 192.168.56.*,也ping不能主機。

第三種 Internal模式
解釋:
內網模式,顧名思義就是內部網路模式,虛擬機與外網完全斷開,只實現虛擬機於虛擬機之間的內部網路模式。
虛擬機與主機關系:
不能相互訪問,彼此不屬於同一個網路,無法相互訪問。
虛擬機與網路中其他主機關系:
不能相互訪問,理由同上。
虛擬機與虛擬機關系:
可以相互訪問,前提是在設置網路時,兩台虛擬機設置同一網路名稱。如上配置圖中,名稱為intnet。
IP: VirtualBox的DHCP伺服器會為它分配IP ,一般得到的是192.168.56.101,因為是從101起分的,也可手工指定192.168.56.*。
筆記本已插網線時:虛擬機可以與主機的VirtualBox Host-Only Network 網卡通信
這種方案不受主機本地連接(網卡)是否有紅叉的影響。

第四種 Host-only Adapter模式
解釋:
主機模式,這是一種比較復雜的模式,需要有比較扎實的網路基礎知識才能玩轉。可以說前面幾種模式所實現的功能,在這種模式下,通過虛擬機及網卡的設置都可以被實現。
我們可以理解為Vbox在主機中模擬出一張專供虛擬機使用的網卡,所有虛擬機都是連接到該網卡上的,我們可以通過設置這張網卡來實現上網及其他很多功能,比如(網卡共享、網卡橋接等)。
虛擬機與主機關系
默認不能相互訪問,雙方不屬於同一IP段,host-only網卡默認IP段為192.168.56.X 子網掩碼為255.255.255.0,後面的虛擬機被分配到的也都是這個網段。通過網卡共享、網卡橋接等,可以實現虛擬機於主機相互訪問。
虛擬機與網路主機關系
默認不能相互訪問,原因同上,通過設置,可以實現相互訪問。
虛擬機與虛擬機關系
默認可以相互訪問,都是同處於一個網段。
虛擬機訪問主機 用的是主機的VirtualBox Host-Only Network網卡的IP:192.168.56.1 ,不管主機「本地連接」有無紅叉,永遠通。
主機訪問虛擬機,用是的虛擬機的網卡3的IP: 192.168.56.101 ,不管主機「本地連接」有無紅叉,永遠通。
虛擬機訪問互聯網,用的是自己的網卡2, 這時主機要能通過「本地連接」有線上網,(無線網卡不行)

通過對以上幾種網路模式的了解,我們就可以靈活運用,模擬組建出我們所想要的任何一種網路環境了。
比如我想模擬出來一個一台主機,監控一個區域網上網情況的網路環境。
首先我開啟了兩台虛擬機vhost1與vhost2,當然如果硬體允許,我同樣可以再增加vhost3、vhost4…
所有的vhost我都設置成internat內網模式,網路名稱為intnal,網關為192.168.56.100,意思就是通過
192.168.56.100網卡上網。其中有一台vhost1我設置為雙網卡,一張為內網模式(192.168.56.100),一張為網橋模式
(192.168.1.101)。兩張網卡設置雙網卡共享上網
虛擬機之間為區域網,其中有一台虛擬機vhost1通過與外網相連,所有區域網中的虛擬機又通過vhost1來實現上外網。這樣vhost1就可以監控整個虛擬機區域網上網情況了。

NAT 設置埠映射
http://huzhangsheng.blog.163.com/blog/static/34787784200802801435931/
你可以設置一個虛擬機的服務(比如 WEB 服務),通過使用命令行工具 VboxManage
代理。你需要知道虛擬機的服務使用哪個埠,然後決定在主機上使用哪個埠(通常但不總是想要使虛擬機和主機使用同一個埠)。在主機上提供一個服務需要
使用一個埠,你能使用在主機上沒有準備用來提供服務的任何埠。一個怎樣設置新的 NAT 例子,在虛擬機上連接到一個 ssh
伺服器,需要下面的三個命令:
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol' TCP
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort' 22
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort' 2222
說明:VboxManage 是一個命令行程序,請查詢你的 VirtualBox 安裝目錄,'Linux Guest'
是虛擬主機名。guestssh 是一個自定義的名稱,你可以任意設置,通過上面的三個命令,把虛擬機的 22 埠 轉發到主機的 2222 埠。
又比如,我在虛擬機 debian 上安裝了 apache2 伺服器,使用 80 埠,映射到主機的 80 埠。使用下面的命令。
'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata
'debian'
'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/Protocol' TCP
'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata
'debian'
'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/GuestPort' 80
'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata
'debian'
'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/HostPort' 80
注意:要使設置生效,請關掉 VirtualBox 再運行虛擬機,我把 VirtualBox 安裝在 winxp 上,在虛擬機中安裝
debian 4.02r ,虛擬機名是 debian ,並安裝了 apache2 php5 mysql-server ,在主機上用IE瀏覽
http://localhost,成功轉發到虛擬機 debian 的 apache2 web 伺服器上

上文出處:http://www.cnblogs.com/coltiam/archive/2010/03/26/1696939.html

個人感覺通過使用埠映射的方式很不爽,還不如直接橋接來的快,現在多數情況下連接到網路是沒問題的,埠映射還需要在宿主跟虛擬機都額外開某個服務,感覺不爽。

「網路」配置頁面有4個方案:

1:NAT 網路地址轉換(Network Address Translation)

2:Birdged Network 橋接

3:Internal Network 內部網路(可以是虛擬機與虛擬機之間)

4:Host-Only 只與主機通信(大概吧)

安裝完VirtualBox2.2後,主機多了一個「VirtualBox Host-Only Network 」本地網卡。

附上出處鏈接:https://www.douban.com/group/topic/15558388/

⑹ 請教幾個LNMP中的vhost的問題

謝謝老大。。。這里所謂的虛擬主機。。。是否可以理解為Win系統下IIS中建立的不同的那些站點?抱歉。。。Linux新手,只能用Win系統中的概念來理解。。。。那麼這vhost的nginx和主站點的nginx之間不會互相影響到吧?在Win系統的IIS中,不同的站點可以跑在不同的應用程序池中的來隔離不同的站點。。。嗯哪,例如一個vhost的站點掛掉了,影響主站點或者其他的vhost。以及通過這個vhost的session或者啥技術手段探測/接觸/影響到其他vhost和主站點。

⑺ 求Linux虛擬主機配置!

www服務的虛擬主機?
有基於主機頭的配置
ip相同埠不同的配置
你說的哪個?
虛擬主機配置默認在/etc/httpd/vhostconf.d/namevhost.conf
假設本機dns 192.168.1.2 ip 192.168.1.2 解析地址為www.123.com
servername 192.168.1.2
namevirtualhost 192.168.1.2
<virtualhost 192.168.1.2:80>
servername www.123.com
documentroot 網站文件地址
剩下不用改

⑻ linux vps 安裝主機管理軟體

linux我也不太懂,不過這里可以給比幾個參考資料http://www.volit.com/vps/help/linux.php1 用戶在火山互聯網站LinuxServer VPS獲得成功後,會顯示出相應的VPS服務信息。
如:虛擬機名稱:vmlinux20101,公網IP:123.59.84.66,內網IP:10.2.1.101,
SSH遠程埠:20101;遠程帳號:root;遠程口令:volit_abcd1234,ftp埠:10101;ftp帳號:myftp;ftp口令:volit1999;mysql帳號:root;mysql口令:volit1999。

2:遠程登錄Linuxserver虛擬機,用戶本地需要安裝SSH客戶端(windows平台:SecureCRT、putty等工具)。
在建立連接窗口中填入相應設置,遠程計算機:123.59.84.66;遠程埠:20101,建立連接成功後會提示輸入相應的帳戶和密碼,輸入後台顯示的賬號及密碼即可登錄。

3:考慮到網路安全,我司將遠程口令是設為隨機,用戶登錄後可自行修改密碼,而MYSQL服務的管理密碼是固定的,請用戶務必更改以保證安全。

4:火山互聯的所有VPS都已經配置好並運行了網站 、FTP服務。用戶可根據自行的情況進行更改。

a:apache服務,安裝路徑在 /usr/local/apache2/,網站數據路徑在/data/web/,apache配置文件是/usr/local/apache2/conf/httpd.conf,php配置文件是/etc/php.ini,
用戶可編輯 /usr/local/apache2/conf/httpd.conf 或 /usr/local/apache2/conf/vhost.conf 添加更改虛擬主機。
配置文件里有模板www.vhost.cn(網站路徑/data/web/www/)與my.mysql.cn(網站路徑/data/web/mysqladmin,使用phpmyadmin管理MYSQL資料庫)。
啟動關閉apache服務命令:/etc/init.d/httpd -k start|stop|restart

b:Pure-Ftpd服務,安裝路徑在 /usr/local/pureftpd/,配置文件是 /usr/local/pureftpd/etc/pure-ftpd.conf,Pure-Ftp使用mysql配置帳戶的文件是/usr/local/pureftpd/etc/pureftpd-mysql.conf。
Pure-Ftpd在mysql資料庫中的默認帳號是: pureftpd;默認密碼:volit1999;默認庫:pureftpd;默認表:users。
新增FTP帳戶:可使用用本機mysql客戶端 /usr/local/mysql/bin/mysql -uroot -pvolit1999 插入帳戶信息至pureftpd.users表,或者使用phpmyadmin對pureftpd.users表進行添加刪除FTP帳戶。
pureftpd.users表特別欄位說明:User:帳戶名;Password:帳戶密碼;Dir:用戶主目錄路徑。

c:MYSQL資料庫服務,安裝路徑在 /usr/local/mysql/,數據目錄在:/data/mysql/,配置文件是 /etc/my.cnf,啟動與關閉服務命令:/etc/init.d/mysqld start|stop|restart,其它客戶端與工具命令路徑:/usr/local/mysql/bin/。
請務必更改密碼保證安全,/usr/local/mysql/bin/mysqladmin password [yourpassword] --password=volit1999,登錄命令:/usr/local/mysql/bin/mysql --user=root --password=[yourpassword]。
可使用apache整合的phpmyadmin對MYSQL資料庫進行方便管理。

5:服務:a:網站服務,登錄火山互聯網站並點擊「產品管理」 板塊里的「VPS租用管理」 ,選擇已訂購的VPS產品,增加已轉向至公網IP的域名,並設置好apache虛擬主機,即可進行訪問。
b:FTP服務,打開瀏覽器,輸入:ftp://myftp:[email protected]:10101 就可以訪問自己的/data/web/目錄了。

6. 重要說明:由於免費VPS使用共享IP,所有網站訪問(80埠的服務)都通過代理轉發到真實VPS中,因此所有網站服務必須在我司會員中心VPS管理中的使用「域名綁定」功能添加VPS中的網站域名後才能正常訪問。

比如在VPS中開設了test.volit.com網站,在把域名指向VPS的公網IP後,網站將不能正常訪問。只有在設置「域名綁定」之後,方可正常訪問。

「域名綁定」流程:登錄會員中心 -> 進入「VPS管理」 -> 顯示所購買或申請到的VPS產品,點擊產品名稱或後面的「管理」鏈接 -> 進入管理頁面,在下面「域名綁定」的輸入框中輸入域名,提交後即可。

伺服器上已經設置了一些默認埠:3389(Windows遠程連接),22(Linux遠程連接),21(FTP連接),這些埠請不要改變或禁用,以免影響管理。

註:以上涉及的服務均應根據您實際獲得的IP、埠與帳號進行設置。

⑼ linux伺服器怎樣綁定域名

一、DNS伺服器的設置

我們知道互聯網網是基於TCP/IP協議的,要進行通信必須獲得對方的IP地址,這是通過DNS伺服器來實現的。因此要想實現虛擬域名首先應當令DNS伺服器接受該虛擬域名,即把它映射到指定的IP地址上。因為我們靠Web伺服器來區分域名,所以這個IP地址自然應當是Web伺服器所管理的。

RedHat6.0操作系統中捆綁有BIND DNS伺服器。它的域名配置文件是」/etc/named.conf」,一般情況下,域配置文件放在」/var/named」目錄下面。

例1、named.conf文件的配置:

zone 「domain.com」 {
type master;
file 「domain.com」;
};
zone 「0.10.10.in-addr.arpa」 {
type master;
file 「10.10.0〃;
};

該例子說明」domain.com」的域配置文件是」/var/named/domain.com」,反向域的配置文件是」/var/named/10.10.0〃。domain.com文件負責把DNS域名映射為IP地址。

例2、domain.com文件配置:

@ IN SOA dns.domain.com. hostmaster.dns.domain.com. (
1998111003 ; serial
3600 ; refresh
900 ; retry
1209600 ; expire
43200 ; default_ttl
)
@ IN MX 10 dns.domain.com.
@ IN NS dns.domain.com.
@ IN A 10.10.0.1
www IN A 10.10.0.1

假定要增加的域名是aaa.domain.com,想要指到www.domain.com,DNS服務中應增加一個別名記錄,可寫成:

aaa IN CNAME www.domain.com.

如果需要配置大量的虛擬域名,domain.com文件要很大,而且也相當麻煩。我們可以使用符號 「*」 ,即在 domain.com 文件中加入:

* IN CNAME www.domain.com.

這樣它就把所有沒給出設置的以domain.com結尾的記錄全部轉到www.domain.com去了,不管是aaa.domain.com還是bbb.domain.com。這不會影響已有的記錄。配置好DNS伺服器後應該重新啟動守護進程named:

[root@domain /root]# /etc/rc.d/init.d/named restart
二、Apache伺服器的配置

Apache伺服器是目前互聯網上使用最多的Web伺服器,它可以維護非常繁忙的站點。RedHat 6.0捆綁了Apache Web Server 1.3。它的配置文件位於」/etc/httpd/conf」目錄下,有httpd.conf、srm.conf、access.conf,下面討論一下與虛擬域名有關的配置:

1、靜態配置

修改配置文件 httpd.conf 的步驟:

(1) 首先設置UseCanonicalName為off。它指示用伺服器Host:header的內容代替ServerName 的值來提供給環境變數SERVER_NAME。

(2) 然後加入:

NameVirtualHost xxx.xxx.xxx.xxx其中xxx.xxx.xxx.xxx為所要配置的虛擬伺服器的IP地址。在此可配置多個虛擬IP地址,當然要與DNS伺服器中的配置一致。(注意:這里要用IP地址,不能用域名。)

(3) 接下來為每個虛擬域名加入一段記錄:

< virtualhost xxx.xxx.xxx.xxx>
…..
< /virtualhost>

xxx.xxx.xxx.xxx要和NameVirtualHost配置的IP地址一致。在兩個標志之間可加入的配置參數有:

ServerName後面跟你要增加的虛擬域名,如aaa.domain.com ;
Documentroot如果你映射到本機的路徑就加在後面,如」/home/aaa」 ;
redirect如果你映射到遠端的URL可加在後面,有兩個參數,第一個是虛擬域名的相對路徑,第二個是遠端站點的URL;
ServerAlias後可加入本域名的別名,可使用通配符,如*.aaa.domain.com 。

下面舉兩個例子:

例3、映射到本機的物理路徑:

< virtualhost xxx.xxx.xxx.xxx>
DocumentRoot 「/home/test」
ServerName test.domain.com
< virtualhost>

例4、映射到遠端的URL:

< virtualhost xxx.xxx.xxx.xxx>
ServerName test1.doamin.com
redirect / http://test.domain1.com/welcome.htm
< /virtualhost>

還有一些參數,象log文件的位置、超時的設置、緩沖區的設置等等,在此不一一介紹,可以參考Apache伺服器的在線幫助文件。配置好httpd.conf文件後需要重新啟動Apache的後台守護進程httpd,

[root@domain /root]# /etc/rc.d/init.d/httpd restart

每增加一個虛擬域名就要增加一段位於 < VirtualHost...>…< /VirtualHost> 之間的配置代碼,而且只有在重新啟動 httpd 後新配置才能生效。

2、動態配置

可以發現,如果要配置大量的虛擬域名將大大增加配置文件的長度,這樣還會使Apache啟動變慢,佔用更多的內存,而且也不容易實現在線申請。可以通過選擇動態方式來配置。這樣不必事先寫好配置,而是通過編寫一定的動態規則來自動生成或隨時從獨立的配置文件中讀取信息。

Apache有一個強大的擴展功能,即模塊(Moles)的特性。模塊可對伺服器的功能進行擴充,它在運行和使用時才裝入伺服器,這樣比一直放入伺服器中要節省內存空間,同時也比調用外部CGI程序速度快。

現在使用一個功能強大的模塊來實現動態配置虛擬域名,這就是mod_rewrite。它負責偵聽從客戶機送出的URL地址,並基於一組規則表達式對該URL來進行重寫。這類似於URL別名概念,但它更進了一步,輸出的URL可以映射到其他主機的任何URL地址上。 修改配置文件httpd.conf的步驟:

(1) 先設置UseCanonicalName為off 。

(2) 使用RewriteEngine on打開rewrite引擎。用RewriteMap設定配置文件的位置和屬性,用RewriteCond和RewriteRule制定相應的規則。

例5、httpd.conf 文件中相關配置的一個例子:

RewriteEngine on
RewriteMap lowercase int:tolower
# 定義獨立的配置文件的位置
RewriteMap vhost dbm:/www/conf/vhostdbm
# 利用獨立的配置文件重映射虛擬域名
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/$1

RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1

這里的 vhostdbm 文件格式見」CGI 程序的編制」 。
三、CGI程序的編制

要實現虛擬域名的在線申請,就必須編寫相應CGI程序動態修改獨立的配置文件(即上面的vhostdbm文件)和進行用戶的管理(包括用戶申請,登錄,密碼修改等等)。在此只介紹對獨立的配置文件的操作,其他屬於如何用Perl語言來編寫CGI程序,請參考有關資料。

vhostdbm文件使用dbm格式來記錄數據,與用普通文本文件相比可加快尋找速度,而且易於修改。許多UNIX系統都具有叫做dbm(database management)的標准庫。該庫將鍵-值對的集合存貯到一對磁碟文件中,提供簡單的資料庫管理工具,可以方便的更改、新增或刪除數據內容。

Perl訪問dbm的方式:通過一個類似於打開文件的進程將關聯數組與dbm資料庫聯系起來。在數組中創建新元素時立即就更改了dbm資料庫。刪除一個元素的同時也刪除了dbm資料庫中的數值。可使用:

1、欲將dbm資料庫與dbm數組相關聯起來:

dbmopen(%arrayname,」dbmfilename」,$mode);

如果dbmfilename不存在的話就新建該庫。%arrayname參數是Perl的關聯數組(如果這個數組已經有值,那麼這些值就被刪除)。該關聯數組連接到叫做dbmfilename的dbm資料庫中。$mode 參數是當需要創建庫時控制庫文件許可權的數字,該數字被指定為8制,經常被用到的是0644,給除了機主之外的新用戶以只讀的許可權,機主可有全部許可權。

2、關閉dbm庫:

dbmclose(%arrayname);
%arrayname 是已經與dbm庫關聯了的數組名。

例6、VHOST打開vhostdbm,或新建一個dbm庫:

dbmopen(%VHOST,」vhostdbm」,0644);

例7、新建記錄或更改已有記錄(設從html文件form中傳過來的參數名為vhost、rhost):
$VHOST{$FORM{』vhost』}}=$FORM{』rhost』};

例8、刪除已有記錄(設從html文件form中傳過來的參數名為vhost):
delete $VHOST{$FORM{』vhost』}};

例9、關閉vhostdbm:

dbmclose(%VHOST);

註:以上已經假設傳過來的參數經過了驗證,不存在重復的記錄,否則會導致已有記錄的混亂。

httpd.conf 該文件底部

< virtualhost 192.168.0.100> #你的伺服器ip
DocumentRoot 「/home/test」 #你的網站路徑
ServerName test.domain.com #你的域名
< virtualhost>

⑽ LINUX操作系統課程設計:企業伺服器的配置與實現怎樣做

一般購買大品牌的伺服器才有相應的驅動程序:
硬體:4核CPU,4G的內存,主板帶RIAD,512G內存,

安裝與配置Web伺服器
Apache伺服器源代碼安裝:
http://httpd.apache.org
Apache RPM軟體下載:
http://updates.redhat.com
Apache模塊和MPM可使用類型的更詳細介紹:
http://httpd.apache.org/docs-2.0/mod/N
Apache對模塊的使用有兩種方法,一種是將其永久性地編譯Apache內核中,即採用靜態編譯;另一種是採取動態編譯,將其編譯成DSO(Dynamic shared object,動態共享對象)模塊,DSO模塊的存儲是獨立於內核的,可被內核在需要時調用,具體是由mod_so模塊提供的運行時配置指令(LoadMole)來實現的,若在編譯中包含有任何動態模塊,則mod_so模塊會被自動包含進內核。若僅希望內核能夠支持裝載DSO模塊,但不實際編譯任何動態模塊,則在編譯配置時就明確指定--enable-so配置參數。
還提供了多道處理模塊MPMs(multi-processing moles),編譯過程中必須包含一個且只能有一個MPM,編譯時系統會根據平台類型自動選擇使用默認的MPM,也可在configure命令行中配置:
--with-mpm=要使用MPM類型

模塊的指定方法:
1.靜態編譯模塊到內核中,如編譯包含mod-sll和mod_rewrite(去掉mod_)模塊:
./configure --enable-mole="ssl rewrite"或./configure --enable-sll --enable-rewrite
動態編譯模塊為DSO:
./configure --enable-mods-shared="ssl rewrite"或./configure --enable-rewrite=shared

模塊說明:
httpd -l //查看httpd進程中包含哪些模塊;
httpd -S //檢查虛擬主機的配置是否存在語法錯誤;
httpd -f //啟動httpd守護進程時,載入配置文件;
mod_deflate模塊允許支持此功能的瀏覽器,在請求的頁面內容發送前進行壓縮,以節少網路帶寬。
mod_vbost_alias模塊支持虛擬主要的動態配置。

chkconfig --level 235 httpd on
chkconfig --list httpd
service httpd start
service httpd restart
service httpd reload //重新裝載httpd.conf(不重啟伺服器)
./configure --prefix=/usr/local/apache2 --enable-so --with-mpm=prefork --enable-moles="setenvif rewrite deflate vhost_alias"
#apachectl start //啟動Apache伺服器;
#apachectl restart
#echo "/usr/local/apache2/bin/apachectl start">>/etc/rc.d/rc.local //自動啟動
#httpd -t //檢查配置文件httpd.conf
#apachect configtest //檢查配置文件httpd.conf
#ServerRoot apache安裝路徑 //設置伺服器的根目錄;
#ServerName 完整的域名[:埠號] //設置伺服器用於重定向(埠)和虛擬主機;
#Listen [IP地址]埠號 //告訴伺服器接受來自指定埠或者指定IP地址的某埠的請求;
Listen 80
Listen 61.186.160.104:8088
#ServrAdmin E-mail地址 //設置Web站點管理員的E-mail地址,當產生錯誤時(如指定的網頁找不到),伺服器返回給客戶端的
錯誤信息中將包含該郵件地址,以告訴用戶該向誰報告錯誤;
#DocumentRoot 目錄路徑名 //設置Web伺服器站點根目錄;
DocumentRoot /usr/local/apache2/htdocs
#ErrorDocument 錯誤號 所要顯示的網頁 //定義當遇到錯誤時,伺服器將給客戶端什麼樣的回應,通常是顯示預設置的一個錯誤頁面;
grep ErrorDocument /etc/httpd/conf/httpd.conf //httpd.conf中一些對不同錯誤的響應信息;
#DirectoryIndex index.php index.htm index.html default.htm //設置站點主頁文件的搜索順序;
#user nobody //設置伺服器以哪種(nobody)用戶身份來響應客戶端的請求;
#Group # -1 //設置伺服器以哪種(nobody)用戶身份來響應客戶端的請求;nobody用戶許可權較小。
#AddDefaultCharset GB2312 //指定默認的字元集;
#TimeOut //設置連接請求超時的時間(秒),超時將斷開;
#KeepAlive //用於啟用持續的連接或者禁用;KeepAlive On|Off
#MaxKeepAliveRequests //設置在一個持續連接期間允許的最大HTTP請求數目;
#KeepAliveTimeout //設置在關閉TCP連接之前,等待後續請示求的秒數;一旦接受請求建立了TCP連接後則開始計時;
#PidFile logs/httpd.pid //指定存放httpd主(父)進程號的文件名;

日誌配置命令:
#ErrorLog //指定伺服器存放錯誤日誌文件的位置和文件名;
#LogLevel //設置記錄在錯誤日誌中的信息的詳細程序;
emerg 緊急,系統將無法使用;
alert 必須立即採取措施;
crit 致命情況;
crror 錯誤情況;
warm 警告;
info 普通信息;
notice 一般重要情況;
debug 出錯級別信息;

http://127.0.0.1 //測試Apache是否正常運行
Test Page
This page is used to test the proper operation of the Apache Web server after it has been installed. If you can read this page, it means that the Apache Web server installed at this site is working properly.

#rpm -q httpd
#rpm -Uvh http-2.0.40-21.11.i386.rpm

目錄說明:
/etc/httpd/conf //Apache伺服器的配置文件httpd.conf
/etc/rc.d/init.d/ //Apache伺服器啟動腳本安裝,httpd
/var/www/html //Web站點根目錄;
/usr/bin //Apache軟體包提供的可執行程序安裝在該目錄下。
/etc/httpd/logs //日誌文件
htdocs //默認Web站點的根目錄,可通過配置文件httpd.conf進行設置或更改;
cgi-bin //CGI腳本目錄;
bin //apachectl啟動腳本會自動設置在某些操作系統下,正常運行httpd所需的環境變數;
httpd守擴進程被調用後做的第一件事就是讀取httpd.conf,並根據其配置項來配置當前Web伺服器;
httpd.conf 分為三部分(section),
第一部分為全局環境設置,主要用於設置ServerRoot、主進程號的保存文件、
對進程的控制、伺服器偵聽的IP地址、埠、要裝載的DSO模塊
第二部分是伺服器的主要配置指一位置;
第三部分用於設置和創建虛擬主機;
Listen 80 //Web伺服器綁定在80埠;
DocumentRoot //設置Web站點的根目錄等;
訪問控制指令:
<Directory /usr/local/*/htdoes> //<Directory>使指定的目錄及其子目錄有效;不可嵌套。目錄名可使用「*」或「?」通配符,
<Files ~「\.ht"> //作用於指定的文件,則不管該文件實際存在子哪個目錄,允許所有主機訪問位於任何目錄下的.ht開的文件
Order allow,deny //指定allow和deny語句,哪一個被執行;允許、禁止訪問主機。
Allow from all //允許所有主機訪問;也可以是IP地址。
<Files>
</Directory>

<Location /assistant> //針對URL地址進行訪問限制,不是文件系統;
Order deny,allow //
Deny from all
Allow from 61.186.160.105
</Location>

Order deny,allow //若主機沒有被特別指出拒絕訪問,則該資源被允許訪問。
Order allow,deny //若主機沒有被特別指出允許訪問,則該主要將被拒絕訪問該資源。
Order mntual-failure //只有那些在allow語句中被指定,同時又沒有出現在deny語句的主機,才允許訪問。若主機在兩條指
令中都沒有出現,則將被拒絕訪問;
*、? //*代表任意個字元,?代表一個任意的字元;
<DirectoryMatch> //指定目錄名時,可直接使用正則表達式;<Directory>若要使用正則表達式,則需要在正則表達式前加「~"
<FilesMatch> //可直接使用正則表達式來通配多個文件;

AccessFileName .htaccess //.htaccess分布式配置文件,在該文件中也可放置一些配置指令,以作用於該文件所在的目錄以及
其下的所有子目錄。搜尋.htaccess文件會降低系統性能;
<Directory />
AllowOverride None //禁止系統查找.htaccess文件;
Options FollowSymLinks //Options:控制在特定目錄中將使用哪些伺服器特性;
</Directory>

Options命令可用的選項:
None 不啟用任何額處特性;
All 除MultiViews之外的所有特性,默認設置;
ExecCGI 允許執行CGI腳本;
FollowSymLinks 伺服器允許在此目錄中使用符號連接。在<Location>段中無效
Includes 允許伺服器端包含SSI(Server-side includes)
IncludesN()EXEC 允許伺服器端包含,但禁用#exec和#exec CGI命令。但仍可以從ScriptAltase目錄使用#include虛擬CGI腳本;
Indexes 如果一個映射目錄的URL被請求,而此目錄中又沒有DirectoryIndex(如:index.html),那麼伺服器返回一個
格式化後的目錄列表;
MultiViews 允許內容協商的多重視圖;
SymLinksIfOwnerMatch 伺服器僅在符號連接與其目的目錄或文件擁有者具有同樣的用戶ID時,才使用它;
ExecCGI 擁有ExecCGI執行許可權;

prefork.c 控制Apache進程,對於使用prefork多道處理模塊的Apache伺服器;
<IfMole prefork.c>
StartServers 5 //設置伺服器啟動時啟動的子進程的個數;
MinSpareServers 5 //設置伺服器中空閑子進程(即沒有HTTP處理請求的子進程)數目的下限;
MaxSpareServers 10 //設置伺服器中空閑子進程數目的上限。若空閑子進程超過該設置值,則父進程就會
停止多餘的子進程;
MaxClients 150 //設置伺服器允許連接的最大客戶數;
MaxRequestsPerChild 0 //設置子進程所能處理請求的數目上限,0為不受限制;
</IfMole>
access_log //日誌文件用於記錄伺服器處理的所有請求;
CustomLog 指定access_log日誌文件的位置和日誌記錄的格式;
LogFormat 定義日誌的記錄格式;
LogFormat 日誌格式字元串 日誌格式名稱
LogFormat "%h %1 %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined;
LogFormat "%h %1 %u %t \"%r\" %>s %b" common;
LogFormat "%{Referer}i->%U" referer;
LogFormat "%{User-agent}i「 agent;
LogFormat logs/access_log common

LogFormat "%v %h %l %u %t \"%r"\ %>s %b" vhost
CustomLog logs/vhost_log vhost

%a 遠程主機IP地址
%A 本地主機IP地址
%h 遠程主機名
%H 請求協議
%l 遠程登錄名
%u 來自auth 的遠程用戶
%U 請求的URL路徑
%U{User-agent}i 用戶瀏覽器類型
%b 發送的位元組數,不包括HTTP標題
%t 請求的時間
%r HTTP請求的第一行的內容
%s HTTP響應狀態碼,200代表訪問成功,404代表文件未找到,403代表禁止訪問,401代表未授權訪問,400代表錯誤請求。
%m 請求方法
%v 服務於該請求的伺服器的ServerName
%V 伺服器的名字,取決於UseCanonicalName的設置
%{Host}i 返回HTTP請求的主機頭信息,可能含埠號信息
split-logfile </var/www/myweb/vhost_log //當所有虛擬機日誌都記錄在主站點日誌中時,使用此命令將日誌按虛擬主機名分組,拆分成一個個獨立的日
志文件,第個日誌文件採用"虛擬主機名.log「形式命名,其中包含了該虛擬主機所產生的日誌記錄;

容器與訪問控制指令:容器指令通常用於封裝一組指令,使其在容器條件成立時有效,或者用於改變指令的作用域。
<IfMoe ! mpm_winnt.c> //<IfMoe>用於判斷指定的模塊是否存在,若存在(被靜態地編譯進伺服器,或是被動態裝載進伺服器)則包含於
其中的指令將有效,否則會被忽略。可嵌套使用。
<IfMoe ! mpm_netware.c> //若要使模塊不存在時所包含的指令有效,只需在模塊名前加一個「!」即可,
User nobody
Group # -1
</IfMoe>
</IfMoe>

基於域名虛擬主機:
例:假設當前伺服器的IP地址為192.168.3.120,現要在該伺服器創建兩個基於域名的虛擬主機,使用埠為標準的80,其域名分別為www.myweb1.com和www.myweb2.com,站點根目錄分別為/var/www/myweb1和/var/www/myweb2,日誌文件分別放在/var/vhlogs/myweb1和/var/vhlogs/myweb2目錄下面,Apache伺服器原來的主站點採用域名www.myweb.com進行訪問。
#vi /etc/hosts //使用/etc/hosts進行域名注冊;
192.168.3.120 www.myweb1.com www.myweb2.com www.myweb.com

#ping www.myweb1.com //檢測域名解析是否正常;
#ping www.myweb2.com
#ping www.myweb.com

#mkdir -p /var/www/myweb1
#mkdir -p /var/www/myweb2
#mkdir -p /var/vhlogs/myweb1
#mkdir -p /var/vhlogs/myweb2

#vi /etc/httpd/conf/httpd.conf
Listen 80 //設置Listen指令偵聽的埠
NameVirtualHost 192.168.3.120 //基於域名的虛擬主機,如果對多個地址使用了多個基於域名的虛擬主機
則對每個地址均要使用此指令:NameVirtualHost IP地址:埠
NameVirtualHost * 當IP地址無法確定時,使用「*」通配任意的IP地址
<VirtualHost 192.168.3.120> //定義一個虛擬主機,VirtualHost的參數必須與NameVirtualHost後面所使用的參數保持一致。
ServerName www.myweb.com //當一個請求到時,伺服器會首先檢查它是否使用了一個能和NameVirtualHost相匹配的IP地址。如果匹配,就會
DocumentRoot /usr/local/apache/htdoes //就會查找每個與這個IP地址相對應的<VirtualHost>配置段,並嘗試找出一個ServerName或ServerAlias配置相
ServerAdmin [email protected] //與請求的主機名(域名)相同的,若找到,則使用該虛擬主機的配置,並響應其訪問請求。否則將使用符合這個
</VirtualHost> //IP地址的第一個列出的虛擬主機。在最前面的虛擬主機成為默認虛擬主機。
<VirtualHost 192.168.3.120>
ServerName www.myweb1.com
DocumentRoot /var/www/myweb1
DirectoryIndex index.php index.php3 index.html index.htm default.html default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb/error_log
TransferLog /var/vhlogs/myweb1/access_log
</VirtualHost>
<VritualHost 192.168.3.200>
ServerName www.myweb2.com
DocumenRoot /var/www/myweb2
DirectoryIndex index.php index.php3 index.htm index.html default.htm default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb2/error_log
TranferLog /var/vhlogs/myweb2/access_log
</VirtualHost>

<Directory /var/www> //對Web站點目錄設置訪問控制;
Options FllowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

Apachectl –S //查查虛擬主機配置是否正確;
Aparhectl restart //重啟Apache伺服器配置生效;

例:
NameVirtualHost 192.168.168.10 //伺服器配有兩塊網卡,IP:內網192.168.168.10,外網61.186.160.104,在Internet網中,企業域名
NameVirtualHost 61.186.160.104 //www.example.com指向外網IP地址,在企業內網的DNS伺服器中,指向內網IP地址;現要求為來自內網
<VirtualHost 192.168.168.10 61.186.160.104> //外網的請求提供同樣的Web服務。(httpd.conf中設置)
DocumentRoot /www/server1
ServerName www.example.com
</Virtual>

例:
Listen 80 //伺服器:192.168.168.154,伺服器上創建兩個基於域名(主機名)的虛擬主機,域名:www.myweb3.com和www.
Listen 8080 //myweb4.com,每個虛擬主機的80埠和8080埠,分別服務一個Web站點,其站點根目錄分別為
// /var/www/myweb3-80、/var/www/myweb3-8080、/var/www/myweb4-80、/var/www/myweb4-8080。
NameVirtualHost 192.168.168.154:80 //www.myweb3.com的80埠作為默認Web站點。
NameVirtualHost 192.168.168.154:8080

<VirtualHost 192.168.168.154:80>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-80
<VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-8080
</VirtualHost>
<VirtualHost 192.168.168.154:80>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-80
</VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-8080
</VirtualHost>

基於IP地址虛擬主機:
#cd /etc/sysconfig/network-scripts //伺服器有兩張網卡eth0、eth1,eth0:192.168.167.157,
#cp ifctg-eth1 ifcfg-eth1:0 //eth1:192.168.167.156.eth0網卡用作了基於主機名的虛擬主機,
#vi ifcfg-eth1:0 //eth1通過IP別名方式,為其綁定多個IP地址,用於提供基於IP地址
DEVICE=eth1:0 //的虛擬主機。eth1綁定的第一張虛擬網卡的設備名為eth1:0,對應的
IPADDR=192.168.167.157 //配置文件為ifcfg-eth1:0,通過修改配置文件中的設備名和IP地址,
#ifdown eth1 //即可實現IP地址的綁定。
#ifup eth1:0
#ifup eth1
#ping 192.168.167.157
#ping 192.168.167.156

#vi /etc/hosts //192.168.167.156:www.example2.com,192.168.167.157:
192.168.167.157 www.example3.com //www.example3.com,試為其創建基於IP地址的虛擬主機,埠使用80
#mkdir -p /var/www/example2 //目錄分別為/var/www/example2、/var/www/example3,為這兩個域再增
#mkdir -p /var/www/example3 //8080埠,使其也能在8080埠發布另外的Web站點。Web站點根目錄分
///var/www/example2-8080、/var/www/example3-8080
#vi httpd.conf
Listen 80
Listen 8080
<VirtualHost 192.168.167.156:80>
ServerName www.example2.com
DocumentRoot /var/www/example2
</VirtualHost>
<VirtualHost 192.168.167.156:8080>
ServerName www.example2.com
DocumentRoot /var/www/example2-8080
</VirtualHost>

<VirtualHost 192.168.167.157:80>
ServerName www.exaple3.com
DocumentRoot /var/www/example3
</VirtualHost>
<VirtualHost 192.168.167.157:8080>
ServerName www.exaple3.com
DocumentRoot /var/www/example3-8080
</VirtualHost>

熱點內容
編程好軟體 發布:2025-01-16 20:38:07 瀏覽:423
流量密碼如何改成 發布:2025-01-16 20:37:13 瀏覽:50
java判斷是否是對象 發布:2025-01-16 20:31:04 瀏覽:885
python調用外部程序 發布:2025-01-16 20:14:09 瀏覽:397
緩解壓力英語作文 發布:2025-01-16 20:13:31 瀏覽:65
javaname 發布:2025-01-16 20:13:15 瀏覽:22
用戶訪問表空間 發布:2025-01-16 20:07:07 瀏覽:944
java代碼自動編譯 發布:2025-01-16 19:58:14 瀏覽:314
編程很困難 發布:2025-01-16 19:58:09 瀏覽:674
gg登錄源碼 發布:2025-01-16 19:58:07 瀏覽:293