虛擬主機的配置


  • 常用的配置

#httpd-vhosts.conf
<VirtualHost *:80> 
    DocumentRoot "D:/wamp/www/laravel"
    ServerName laravel.com 
</VirtualHost>
#不要忘記修改hosts文件
  • 虛擬主機配置(全)

<VirtualHost *:80>
    #設置服務器返回給客戶端的錯誤信息中包含的管理員郵件地址
    ServerAdmin webmaster@dummy-host.example.com
    #項目入口處的文件夾
    DocumentRoot "D:/xampp/htdocs/wherein"
    #創建重定向URL
    ServerName www.shop_dev.com
    #服務器遇到錯誤時記錄錯誤日志的文件
    ErrorLog "logs/wherein.com-error.log"
    #設置日志文件,並指明日志文件所用的格式
    CustomLog "logs/wherein.com-access.log" common
    <Directory "D:/xampp/htdocs/wherein">     #為主目錄或虛擬目錄設置權限
        #目錄權限
        Options FollowSymLinks IncludesNOEXEC Indexes
        #訪問目錄后進入的默認文件
        DirectoryIndex index.html index.htm index.php
        AllowOverride all
        #控制目錄和文件的訪問權限
        Order Deny,Allow
        #允許全部
        Allow from all
    </Directory>
</VirtualHost>

1. ServerAdmin指令:

語法: ServerAdmin email-address|URL
用來設置服務器返回給客戶端的錯誤信息中包含的管理員郵件地址。便於用戶在收到錯誤信息后能及時與管理員取得聯系。

2. DocumentRoot指令:

語法:DocumentRoot directory-path
用來設置httpd提供服務的目錄。即你所在項目入口處的文件夾。

3. ServerName指令:

語法:ServerName [scheme://] FQDN [:port]
用來設置服務器用於辨識自己的主機名和端口號。主要用於創建重定向URL。

4. ErrorLog指令:

語法: ErrorLog file-path
來設置當服務器遇到錯誤時記錄錯誤日志的文件。如果file-path不是以/開頭的絕對路徑,那么將會被認為是一個相對於ServerRoot的相對路徑。

5. CustomLog指令:

語法: ErrorLog file-path common
設置日志文件,並指明日志文件所用的格式(通常通過格式的名字)。

6. Directory 目錄路徑

為主目錄或虛擬目錄設置權限。

特性:

命令 說明
Indexes 允許目錄瀏覽 當客戶僅指定要訪問的目錄,但沒有指定要訪問目錄下的哪個文件,而且目錄下不存在默認文檔時,Apache以超文本形式返回目錄中的文件和子目錄列表(虛擬目錄不會出現在目錄列表中)
MultiViews 允許內容協商的多重視圖 MultiViews其實是Apache的一個智能特性。當客戶訪問目錄 中一個不存在的對象時,如訪問"http://192.168.66.6/data/a",則Apache會查找這個目錄下所有a.*文件。由於 data目錄下存在a.gif文件,因此Apache會將a.gif文件返回給客戶,而不是返回出錯信息
All All包含了除MultiViews之外的所有特性,如果沒有Options語句,默認為All
ExecCGI 允許在該目錄下執行CGI腳本
FollowSymLinks 可以在該目錄中使用符號連接
Includes 允許服務器端包含功能
IncludesNoExec 允許服務器端包含功能,但禁用執行CGI腳本
一旦定義允許目錄瀏覽,就會將Web站點的文件夾和文件名結構暴露給黑客。目錄瀏覽還會允許黑客瀏覽文件並掌握服務器配置信息,所以指定該權限往往帶來安全性上的隱患。除非有充足的理由要使用目錄瀏覽,否則應該禁用它。

DirectoryIndex index.html index.htm index.php

設置訪問目錄后進入的默認文件

AllowOverride all (http://www.upupw.net/server/n73.html)

AllowOverride從字面上解釋是允許覆蓋的意思,即Apache允許另一配置文件覆蓋現有配置文件。

我們通常利用Apache的rewrite模塊對URL進行重寫,rewrite規則會寫在 .htaccess 文件里。但要使 apache 能夠正常的讀取.htaccess 文件的內容,就必須對.htaccess 所在目錄進行配置。

從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override,即:None

在 AllowOverride 設置為 None 時, .htaccess 文件將被完全忽略。當此指令設置為 All 時,所有具有 “.htaccess” 作用域的指令都允許出現在 .htaccess 文件中。

而對於 URL rewrite 來說,至少需要把目錄設置為:FileInfo

Order Deny,Allow(https://blog.csdn.net/wlzx120/article/details/52313371)

Allow from all
設置缺省的訪問權限與Allow和Deny語句的處理順序allow, deny:缺省禁止所有客戶機的訪問,且Allow語句在Deny語句之前被匹配。如果某條件既匹配Deny語句又匹配Allow語句,則Deny語句會起作用(因為Deny語句覆蓋了Allow語句)。deny, allow:缺省允許所有客戶機的訪問,且Deny語句在Allow語句之前被匹配。如果某條件既匹配Deny語句又匹配Allow語句,則Allow語句會起作用(因為Allow語句覆蓋了Deny語句)。
  • eg
Order deny ,allow
Deny from baidu.com
#除了來自baidu.com域和ip地址為192.168.66.6的客戶機外,允許所有客戶機訪問Order deny ,allow
Deny from 192.168.66.6
Allow from 192.168.66.6
#既匹配Deny語句又匹配Allow語句,由於allow語句覆蓋了deny語句,所以是允許所有客戶機訪問Order
Deny from 192.168.66.1 allow ,deny
Allow from 192.168.66.6
#既匹配Deny語句又匹配Allow語句,由於deny語句覆蓋了allow語句,所以是禁止所有客戶機訪問
Deny from 192.168.66.1
  • Require
Require all granted #允許所有
Require all denied #拒絕所有
Require env env-var [env-var] ... #允許匹配環境變量中任意一個
Require method http-method [http-method] ... #允許特定的HTTP方法(GET/POST/HEAD/OPTIONS)
Require expr expression #允許,表達式為true
Require user userid [ userid ] ... #允許特定用戶
Require group group-name [group-name] ... #允許特定用戶組
Require valid-user # #允許,有效用戶
Require ip 192.100 192.168.100 192.168.100.5 #允許特定IP或IP段,多個IP或IP段間使用空格分隔

如果想讓局域訪問不要忘記數據庫權限(mysql本身的用戶只能在本機上連接數據庫,外網連接的話,需要先添加遠程用戶並授權。)


免責聲明!

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



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