Apache/Ngnix虛擬主機的配置

一.配置http-vhosts.conf

首先在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>

二.關於Apache指令

關於指令的具體用法,請參考《Upgrading to 2.4 from 2.2nginx

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

三.修改Hosts地址映射

還剩最後一步,那就是該本身本地的域名解析地址(dns)

一般位置在"C:/windows/System32/drivers/etc/hosts"

添加映射本身的地址,仿照

127.0.0.1   localhost
192.168.28.3  www.anciyoujiao.com

好了,重啓服務器,而後在url欄輸入你配置虛擬主句地址便可

 

四.Nginx 虛擬主機站點配置

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;

Apache 的 httpd.conf 詳解

http://blog.csdn.net/scliu0718/article/details/7198889

Nginx 配置之完整篇

Nginx 配置之性能篇

Nginx 配置之安全篇

相關文章
相關標籤/搜索