Apache多站點實現原理和配置


Apache多站點實現原理

apache安裝服務

httpd.exe -k install
httpd.exe -k uninstall

很多人常常看到一台服務器上跑多個站點,不同的域名訪問不同的站點,就會有個疑惑:訪問的時候並沒有在地址欄中加入端口號,多個域名都是解析到這個服務器的IP地址,服務器怎么能夠正確的分辨和解析呢?

其實還是對http協議不夠了解,看下圖一切一目了然

如何實現www.abc.com能映射到服務器的8000端口呢? 注意這里是不帶端口號的,www.abc.com:8000,這樣太丑陋

對應的在apache中有rewite和proxy模塊,它們就是為了完成這些任務, 一台服務上我們配置多個 vhost,必然需要端口號,
比如:
a.com :80
b.com :8080

實際訪問的時候www.a.com自動轉發到80端口,www.b.com則自動轉發到8080端口。

但是實際上利用80端口可以配置多個vhost,這已經夠了

#定義vhost組
NameVirtualHost *:80

網站 1:

<VirtualHost *:80>
	ServerName shazuihuo.com
	ServerAdmin wancy86@sina.com
	
	DocumentRoot /var/www/shazuihuo/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/demo/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

網站 2:

<VirtualHost *:80>
	ServerName tuitu.cn
	ServerAdmin wancy86@sina.com
	
	DocumentRoot /var/www/tuitu/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/demo/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

這樣一個服務器的80端口上就跑起兩個站點.

虛擬主機只能使用域名訪問

沒事找了個虛擬主機來試用,嘗試用給的IP地址訪問怎么都訪問不了,一直都顯示

后來仔細一想,虛擬主機是需要依賴域名的,不然沒辦法區分vhost,后來找到測試的域名果然可以正常訪問了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM