首先在apache配置文件中httpd.conf將下面代碼前的#去掉php
#Include conf/extra/httpd-vhosts.conf
而後打開conf/extra/httpd-vhosts.conf加上下面的配置信息html
#默認訪問網絡路徑映射的物理路徑 <VirtualHost _default_:80> DocumentRoot "D:\WWW" //設置默認網站根目錄 </VirtualHost> #文檔可訪問性設置,這裏對全部的訪問公開,並支持cgi #Options -Indexes +FollowSymLinks +ExecCGI 禁止自動索引目錄中的文件,注意,+和-以前必須有空格 <Directory "D:\WWW"> Options -Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> #配置本身的虛擬站點,如如下將物理路徑映射出響應的網絡路徑,注意文件夾名能夠和域名不一樣 <VirtualHost *:80> DocumentRoot "D:\WWW\anciyoujiao" ServerName www.anciyoujiao.com ServerAlias anciyoujiao.com </VirtualHost> #這裏也是設置權限,只是目錄位置不一樣而已,其實這一步已無必要,可是爲了規範仍是加上吧 <Directory "D:\WWW\anciyoujiao"> Options FollowSymLinks ExecCGI AllowOverride All Order allow,deny Allow from all </Directory>
Listen 9090 <VirtualHost *:9090> DocumentRoot "D:\PHPStudy\WWW" <Directory "D:\PHPStudy\WWW"> Options -Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost> Listen 9091 <VirtualHost *:9091> DocumentRoot "D:\PHPStudy\myWeb" ServerName www.myhost.com <Directory "D:\PHPStudy\myWeb"> Options -Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost>
關於指令的具體用法,請參考《Upgrading to 2.4 from 2.2》nginx
Order表示檢查規則的順序:allow和deny那個規則先起做用apache
①順序決定過濾結果 allow,deny表示先過濾allow的,最後deny規則來過濾allow過濾的後的,反之同樣。windows
② deny或者規則不存在,那麼被認爲起相反的做用,好比,deny規則不存在時,不回去過濾,等同於allow安全
③同一類【Allow類Deny類】中規則指令具備優先級,規則越靠後,優先級越高服務器
Order [(allow,deny)或(deny,allow)] #順序指令 [Allow 或 Deny規則1] #規則指令 [Allow 或 Deny規則2] #規則指令 [Allow 或 Deny規則3] #規則指令
下面的例子是拒絕全部網絡
apache 2.2 app
Order deny,allow Deny from all
Deny先檢查,Allow規則後檢查ide
Deny規則拒絕全部ip,但allow 規則不存在,不進行過濾,等於認同Deny規則
apache2.4
Require all denied
下面的例子是統一全部訪問
apache 2.2
Order allow,deny Allow from all
apache2.4
Require all granted
AllowOverride指令
AllowOverride參數就是指明Apache服務器是否去找.htacess文件做爲配置文件,若是設置爲none,那麼服務器將忽略.htacess文件,若是設置爲All,那麼全部在.htaccess文件裏有的指令都將被重寫。
Options指令
1 All 准許如下除MultiViews之外全部功能
2 MultiViews 容許多重內容被瀏覽,若是你的目錄下有一個叫作foo.txt的文件,那麼你能夠經過/foo來訪問到它,這對於一個多語言內容的站點比較有用
3 Indexes 若該目錄下無index文件,則准許顯示該目錄下的文件以供選擇
4 IncludesNOEXEC 准許SSI,但不可以使用#exec和#include功能
5 Includes 准許SSI
6 FollowSymLinks 在該目錄中,服務器將跟蹤符號連接。注意,即便服務器跟蹤符號連接,它也不會改變用來匹配不一樣區域的路徑名,若是在<Local>;標記內設置,該選項會被忽略
7 SymLinksIfOwnerMatch 在該目錄中僅僅跟蹤本站點內的連接
8 ExecCGI 在該目錄下准許使用CGI
還剩最後一步,那就是該本身本地的域名解析地址(dns)
一般位置在"C:/windows/System32/drivers/etc/hosts"
添加映射本身的地址,仿照
127.0.0.1 localhost 192.168.28.3 www.anciyoujiao.com
好了,重啓服務器,而後在url欄輸入你配置虛擬主句地址便可
vhosts.conf
#靜態域名配置 server { listen 80; server_name www.appTest.com; index index.html index.htm index.php; root "D:/PHPStudy/WWW/appTest"; location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } # 這裏爲圖片添加爲期 1小時的過時時間, 而且只容許Google, 百度和本站引用圖片,其餘站點禁止訪問 location ~ .*\.(ico|jpg|jpeg|png|gif)$ { expires 1h; valid_referers none blocked *.appTest.com *.google.com *.baidu.com; if ($invalid_referer) { rewrite ^/ /site_safe_img.php; # return 404; } } location ^~ /logs/{ #禁止訪問日誌目錄 deny all; } #目錄映射(root 映射) location ^~ /BBS { root 'D:/phpStudy/WWW/';#訪問的地址是D:/phpStudy/WWW/BBS/ index index.html index.htm; } #目錄映射(alias 映射) location ^~ /BBS2 { alias 'D:/phpStudy/WWW/TestBBS/';#訪問的地址是D:/phpStudy/WWW/TestBBS/ index index.html index.htm; } log_format www.appTest.com '$remote_addr - $remote_user [$time_local] $request' '$status $body_bytes_sent $http_referer ' '$http_user_agent $http_x_forwarded_for'; access_log "D:/PHPStudy/WWW/appTest/logs/www.appTest.com.log.txt" www.appTest.com; } #動態二級域名配置 server { listen 80; server_name ~^(.+)?\.phpTest\.com$; index index.html index.htm; if ($host = phpTest.com){ rewrite ^ http://www.phpTest.com permanent; } root D:/PHPStudy/WWW/phpTest/$1/; }
爲了配合防盜鏈,咱們有必要設置一個防盜鏈圖片廣告,來利用盜鏈信息
site_safe_img.php
<?php $filePath = __dir__.DIRECTORY_SEPARATOR.'IMG_02.jpg'; $file = fopen($filePath,"r"); // 打開文件 // 輸入文件標籤 Header("Content-type: Image/jpeg"); Header("Accept-Ranges: bytes"); Header("Accept-Length: ".filesize($filePath)); Header("Content-Disposition: inline; filename="."site_safe_img.jpg"); // 輸出文件內容 echo fread($file,filesize($filePath)); fclose($file); exit(); ?>
ngnix
include vhosts.conf;