激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - WEB服務器 - Apache 配置詳解(最好的APACHE配置教程)

Apache 配置詳解(最好的APACHE配置教程)

2019-11-03 19:48服務器之家 WEB服務器

Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。

Apache的配置

Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。 
主站點的配置(基本配置)

(1) 基本配置:

ServerRoot "/mnt/software/apache2" #你的apache軟件安裝的位置。其它指定的目錄如果沒有指定絕對路徑,則目錄是相對于該目錄。

PidFile logs/httpd.pid #第一個httpd進程(所有其他進程的父進程)的進程號文件位置。

Listen 80 #服務器監聽的端口號。

ServerName www.clusting.com:80 #主站點名稱(網站的主機名)。 
ServerAdmin [email protected] #管理員的郵件地址。 
DocumentRoot "/mnt/web/clusting" #主站點的網頁存儲位置。


以下是對主站點的目錄進行訪問控制:

 

復制代碼代碼如下:

<Directory "/mnt/web/clusting"> 
Options FollowSymLinks 
AllowOverride None 
Order allow,deny 
Allow from all 
</Directory> 

 

在上面這段目錄屬性配置中,主要有下面的選項:

Options:配置在特定目錄使用哪些特性,常用的值和基本含義如下: 
ExecCGI: 在該目錄下允許執行CGI腳本。 
FollowSymLinks: 在該目錄下允許文件系統使用符號連接。 
Indexes: 當用戶訪問該目錄時,如果用戶找不到DirectoryIndex指定的主頁文件(例如index.html),則返回該目錄下的文件列表給用戶。 
SymLinksIfOwnerMatch: 當使用符號連接時,只有當符號連接的文件擁有者與實際文件的擁有者相同時才可以訪問。

其它可用值和含義請參閱:http://www.clusting.com/Apache/ApacheManual/mod/core.html#options

AllowOverride:允許存在于.htaccess文件中的指令類型(.htaccess文件名是可以改變的,其文件名由AccessFileName指令決定): 
None: 當AllowOverride被設置為None時。不搜索該目錄下的.htaccess文件(可以減小服務器開銷)。

All: 在.htaccess文件中可以使用所有的指令。

其他的可用值及含義(如:Options FileInfo AuthConfig Limit等),請參看: http://www.clusting.com/Apache/ApacheManual/mod/core.html#AllowOverride

Order:控制在訪問時Allow和Deny兩個訪問規則哪個優先:

Allow:允許訪問的主機列表(可用域名或子網,例如:Allow from 192.168.0.0/16)。

Deny:拒絕訪問的主機列表。

更詳細的用法可參看:http://www.clusting.com/Apache/ApacheManual/mod/mod_access.html#order

DirectoryIndex index.html index.htm index.php #主頁文件的設置(本例將主頁文件設置為:index.html,index.htm和index.php)


(2) 服務器的優化 (MPM: Multi-Processing Modules) 
apache2主要的優勢就是對多處理器的支持更好,在編譯時同過使用--with-mpm選項來決定apache2的工作模式。如果知道當前的apache2使用什么工作機制,可以通過httpd -l命令列出apache的所有模塊,就可以知道其工作方式:

prefork:如果httpd -l列出prefork.c,則需要對下面的段進行配置:

<IfModule prefork.c> 
StartServers 5 #啟動apache時啟動的httpd進程個數。 
MinSpareServers 5 #服務器保持的最小空閑進程數。 
MaxSpareServers 10 #服務器保持的最大空閑進程數。 
MaxClients 150 #最大并發連接數。 
MaxRequestsPerChild 1000 #每個子進程被請求服務多少次后被kill掉。0表示不限制,推薦設置為1000。 
</IfModule>


在該工作模式下,服務器啟動后起動5個httpd進程(加父進程共6個,通過ps -ax|grep httpd命令可以看到)。當有用戶連接時,apache會使用一個空閑進程為該連接服務,同時父進程會fork一個子進程。直到內存中的空閑進程達到MaxSpareServers。該模式是為了兼容一些舊版本的程序。我缺省編譯時的選項。

worker:如果httpd -l列出worker.c,則需要對下面的段進行配置:

<IfModule worker.c> 
StartServers 2 #啟動apache時啟動的httpd進程個數。 
MaxClients 150 #最大并發連接數。 
MinSpareThreads 25 #服務器保持的最小空閑線程數。 
MaxSpareThreads 75 #服務器保持的最大空閑線程數。 
ThreadsPerChild 25 #每個子進程的產生的線程數。 
MaxRequestsPerChild 0 #每個子進程被請求服務多少次后被kill掉。0表示不限制,推薦設置為1000。 
</IfModule>


該模式是由線程來監聽客戶的連接。當有新客戶連接時,由其中的一個空閑線程接受連接。服務器在啟動時啟動兩個進程,每個進程產生的線程數是固定的(ThreadsPerChild決定),因此啟動時有50個線程。當50個線程不夠用時,服務器自動fork一個進程,再產生25個線程。


perchild:如果httpd -l列出perchild.c,則需要對下面的段進行配置:

<IfModule perchild.c> 
NumServers 5 #服務器啟動時啟動的子進程數 
StartThreads 5 #每個子進程啟動時啟動的線程數 
MinSpareThreads 5 #內存中的最小空閑線程數 
MaxSpareThreads 10 #最大空閑線程數 
MaxThreadsPerChild 2000 #每個線程最多被請求多少次后退出。0不受限制。 
MaxRequestsPerChild 10000 #每個子進程服務多少次后被重新fork。0表示不受限制。 
</IfModule>

該模式下,子進程的數量是固定的,線程數不受限制。當客戶端連接到服務器時,又空閑的線程提供服務。 如果空閑線程數不夠,子進程自動產生線程來為新的連接服務。該模式用于多站點服務器。 
(3) HTTP返頭回信息配置:

ServerTokens Prod #該參數設置http頭部返回的apache版本信息,可用的值和含義如下:

Prod:僅軟件名稱,例如:apache 
Major:包括主版本號,例如:apache/2 
Minor:包括次版本號,例如:apache/2.0 
Min:僅apache的完整版本號,例如:apache/2.0.54 
OS:包括操作系統類型,例如:apache/2.0.54(Unix) 
Full:包括apache支持的模塊及模塊版本號,例如:Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g 
ServerSignature Off #在頁面產生錯誤時是否出現服務器版本信息。推薦設置為Off


(4) 持久性連接設置

KeepAlive On #開啟持久性連接功能。即當客戶端連接到服務器,下載完數據后仍然保持連接狀態。

MaxKeepAliveRequests 100 #一個連接服務的最多請求次數。

KeepAliveTimeout 30 #持續連接多長時間,該連接沒有再請求數據,則斷開該連接。缺省為15秒。

別名設置 
對于不在DocumentRoot指定的目錄內的頁面,既可以使用符號連接,也可以使用別名。別名的設置如下:

Alias /download/ "/var/www/download/" #訪問時可以輸入:http://www.custing.com/download/

 

復制代碼代碼如下:

<Directory "/var/www/download"> #對該目錄進行訪問控制設置 
Options Indexes MultiViews 
AllowOverride AuthConfig 
Order allow,deny 
Allow from all 
</Directory> 

 

CGI設置

ScriptAlias /cgi-bin/ "/mnt/software/apache2/cgi-bin/" # 訪問時可以:http://www.clusting.com/cgi-bin/ 。但是該目錄下的CGI腳本文件要加可執行權限!

<Directory "/usr/local/apache2/cgi-bin"> #設置目錄屬性 
AllowOverride None 
Options None 
Order allow,deny 
Allow from all 
</Directory>


個人主頁的設置 (public_html)

UserDir public_html (間用戶的主頁存儲在用戶主目錄下的public_html目錄下 URL http://www.clusting.com/~bearzhang/file.html 將讀取 /home/bearzhang/public_html/file.html 文件) 
chmod 755 /home/bearzhang #使其它用戶能夠讀取該文件。 
UserDir /var/html (the URL http://www.clusting.com/~bearzhang/file.html 將讀取 /var/html/bearzhang/file.html) 
UserDir /var/www/*/docs (the URL http://www.clusting.com/~bearzhang/file.html 將讀取 /var/www/bearzhang/docs/file.html)

日志的設置

(1)錯誤日志的設置 
ErrorLog logs/error_log #日志的保存位置 
LogLevel warn #日志的級別

顯示的格式日下: 
[Mon Oct 10 15:54:29 2005] [error] [client 192.168.10.22] access to /download/ failed, reason: user admin not allowed access

(2)訪問日志設置

日志的缺省格式有如下幾種: 
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined 
LogFormat "%h %l %u %t "%r" %>s %b" common #common為日志格式名稱 
LogFormat "%{Referer}i -> %U" referer 
LogFormat "%{User-agent}i" agent 
CustomLog logs/access_log common


格式中的各個參數如下:

%h --客戶端的ip地址或主機名 
%l --The 這是由客戶端 identd 判斷的RFC 1413身份,輸出中的符號 "-" 表示此處信息無效。 
%u --由HTTP認證系統得到的訪問該網頁的客戶名。有認證時才有效,輸出中的符號 "-" 表示此處信息無效。 
%t --服務器完成對請求的處理時的時間。 
"%r" --引號中是客戶發出的包含了許多有用信息的請求內容。 
%>s --這個是服務器返回給客戶端的狀態碼。 
%b --最后這項是返回給客戶端的不包括響應頭的字節數。 
"%{Referer}i" --此項指明了該請求是從被哪個網頁提交過來的。 
"%{User-Agent}i" --此項是客戶瀏覽器提供的瀏覽器識別信息。

下面是一段訪問日志的實例: 
192.168.10.22 - bearzhang [10/Oct/2005:16:53:06 +0800] "GET /download/ HTTP/1.1" 200 1228 
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] "GET /icons/blank.gif HTTP/1.1" 304 - 
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] "GET /icons/back.gif HTTP/1.1" 304 -

各參數的詳細解釋,請參閱:http://www.clusting.com/Apache/ApacheManual/logs.html


用戶認證的配置 
(1)in the httpd.conf: 
AccessFileName .htaccess 
......... 
Alias /download/ "/var/www/download/" 
<Directory "/var/www/download"> 
Options Indexes 
AllowOverride AuthConfig 
</Directory> 
(2) create a password file: 
/usr/local/apache2/bin/htpasswd -c /var/httpuser/passwords bearzhang

(3)onfigure the server to request a password and tell the server which users are allowed access. 
vi /var/www/download/.htaccess: 
AuthType Basic 
AuthName "Restricted Files" 
AuthUserFile /var/httpuser/passwords 
Require user bearzhang 
#Require valid-user #all valid user

虛擬主機的配置 
(1)基于IP地址的虛擬主機配置 
Listen 80 
<VirtualHost 172.20.30.40> 
DocumentRoot /www/example1 
ServerName www.example1.com 
</VirtualHost> 
<VirtualHost 172.20.30.50> 
DocumentRoot /www/example2 
ServerName www.example2.org 
</VirtualHost>


(2) 基于IP和多端口的虛擬主機配置 
Listen 172.20.30.40:80 
Listen 172.20.30.40:8080 
Listen 172.20.30.50:80 
Listen 172.20.30.50:8080

<VirtualHost 172.20.30.40:80> 
DocumentRoot /www/example1-80 
ServerName www.example1.com 
</VirtualHost>

<VirtualHost 172.20.30.40:8080> 
DocumentRoot /www/example1-8080 
ServerName www.example1.com 
</VirtualHost>

<VirtualHost 172.20.30.50:80> 
DocumentRoot /www/example2-80 
ServerName www.example1.org 
</VirtualHost>

<VirtualHost 172.20.30.50:8080> 
DocumentRoot /www/example2-8080 
ServerName www.example2.org 
</VirtualHost>

(3)單個IP地址的服務器上基于域名的虛擬主機配置: 
# Ensure that Apache listens on port 80 
Listen 80

# Listen for virtual host requests on all IP addresses 
NameVirtualHost *:80

<VirtualHost *:80> 
DocumentRoot /www/example1 
ServerName www.example1.com 
ServerAlias example1.com. *.example1.com 
# Other directives here 
</VirtualHost>

<VirtualHost *:80> 
DocumentRoot /www/example2 
ServerName www.example2.org 
# Other directives here 
</VirtualHost>

(4)在多個IP地址的服務器上配置基于域名的虛擬主機: 
Listen 80

# This is the "main" server running on 172.20.30.40 
ServerName server.domain.com 
DocumentRoot /www/mainserver

# This is the other address 
NameVirtualHost 172.20.30.50

<VirtualHost 172.20.30.50> 
DocumentRoot /www/example1 
ServerName www.example1.com 
# Other directives here ... 
</VirtualHost>

<VirtualHost 172.20.30.50> 
DocumentRoot /www/example2 
ServerName www.example2.org 
# Other directives here ... 
</VirtualHost>

(5)在不同的端口上運行不同的站點(基于多端口的服務器上配置基于域名的虛擬主機): 
Listen 80 
Listen 8080

NameVirtualHost 172.20.30.40:80 
NameVirtualHost 172.20.30.40:8080

<VirtualHost 172.20.30.40:80> 
ServerName www.example1.com 
DocumentRoot /www/domain-80 
</VirtualHost>

<VirtualHost 172.20.30.40:8080> 
ServerName www.example1.com 
DocumentRoot /www/domain-8080 
</VirtualHost>

<VirtualHost 172.20.30.40:80> 
ServerName www.example2.org 
DocumentRoot /www/otherdomain-80 
</VirtualHost>

<VirtualHost 172.20.30.40:8080> 
ServerName www.example2.org 
DocumentRoot /www/otherdomain-8080 
</VirtualHost>

(6)基于域名和基于IP的混合虛擬主機的配置: 
Listen 80

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40> 
DocumentRoot /www/example1 
ServerName www.example1.com 
</VirtualHost>

<VirtualHost 172.20.30.40> 
DocumentRoot /www/example2 
ServerName www.example2.org 
</VirtualHost>

<VirtualHost 172.20.30.40> 
DocumentRoot /www/example3 
ServerName www.example3.net 
</VirtualHost>

 

SSL加密的配置

首先在配置之前先來了解一些基本概念:

證書的概念:首先要有一個根證書,然后用根證書來簽發服務器證書和客戶證書,一般理解:服務器證書和客戶證書是平級關系。SSL必須安裝服務器證書來認證。 因此:在此環境中,至少必須有三個證書:根證書,服務器證書,客戶端證書。 在生成證書之前,一般會有一個私鑰,同時用私鑰生成證書請求,再利用證書服務器的根證來簽發證書。

SSL所使用的證書可以自己生成,也可以通過一個商業性CA(如Verisign 或 Thawte)簽署證書。

簽發證書的問題:如果使用的是商業證書,具體的簽署方法請查看相關銷售商的說明;如果是知己簽發的證書,可以使用openssl自帶的CA.sh腳本工具。

如果不為單獨的客戶端簽發證書,客戶端證書可以不用生成,客戶端與服務器端使用相同的證書。 
(1) conf/ssl.conf 配置文件中的主要參數配置如下:

Listen 443 
SSLPassPhraseDialog buildin 
#SSLPassPhraseDialog exec:/path/to/program 
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache 
SSLSessionCacheTimeout 300 
SSLMutex file:/usr/local/apache2/logs/ssl_mutex

<VirtualHost _default_:443>

# General setup for the virtual host 
DocumentRoot "/usr/local/apache2/htdocs" 
ServerName www.example.com:443 
ServerAdmin [email protected] 
ErrorLog /usr/local/apache2/logs/error_log 
TransferLog /usr/local/apache2/logs/access_log

SSLEngine on 
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key 
CustomLog /usr/local/apache2/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

</VirtualHost>

(2) 創建和使用自簽署的證書: 
a.Create a RSA private key for your Apache server 
/usr/local/openssl/bin/openssl genrsa -des3 -out /usr/local/apache2/conf/ssl.key/server.key 1024

b. Create a Certificate Signing Request (CSR) 
/usr/local/openssl/bin/openssl req -new -key /usr/local/apache2/conf/ssl.key/server.key -out /usr/local/apache2/conf/ssl.key/server.csr

c. Create a self-signed CA Certificate (X509 structure) with the RSA key of the CA 
/usr/local/openssl/bin/openssl req -x509 -days 365 -key /usr/local/apache2/conf/ssl.key/server.key -in /usr/local/apache2/conf/ssl.key/server.csr -out /usr/local/apache2/conf/ssl.crt/server.crt

/usr/local/openssl/bin/openssl genrsa 1024 -out server.key 
/usr/local/openssl/bin/openssl req -new -key server.key -out server.csr 
/usr/local/openssl/bin/openssl req -x509 -days 365 -key server.key -in server.csr -out server.crt

(3) 創建自己的CA(認證證書),并使用該CA來簽署服務器的證書。 
mkdir /CA 
cd /CA 
cp openssl-0.9.7g/apps/CA.sh /CA 
./CA.sh -newca 
openssl genrsa -des3 -out server.key 1024 
openssl req -new -key server.key -out server.csr 
cp server.csr newreq.pem 
./CA.sh -sign 
cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.crt 
cp server.key /usr/local/apache2/conf/ssl.key/

gzip配置:

LoadModule deflate_module modules/mod_deflate.so

SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript


訪問控制:

    Order deny,allow
    Deny from all
    Allow from 192.168.0.0/8

流量控制:
<Location /a>
        Bandwidth all 51200
        MaxConnection all 30
        BandWidthError 510
</Location>

設置proxy,將請求轉發:

  ProxyRequests Off
  ProxyPass /a/  http://bwl.com/a/
  ProxyPassReverse /a/ http://bwl.com/a/

VirtualHost配置實例:
<VirtualHost *>
    ServerName a.bwl.com
    ServerAlias  b.bwl.com
    DocumentRoot "/search/a"
    DirectoryIndex abc.html
</VirtualHost>

延伸 · 閱讀

精彩推薦
  • WEB服務器WDCP控制面板升級mysql為5.7.11的方法

    WDCP控制面板升級mysql為5.7.11的方法

    本文主要講解在WDCP控制面板升級mysql為5.7.11的方法,有需要的朋友可以參考下...

    yuanxiaoping5322020-07-15
  • WEB服務器云端webdav服務器

    云端webdav服務器

    云端WebDAV服務器是一種在云端環境下提供WebDAV(Web Distributed Authoring and Versioning)協議服務的技術。WebDAV是一種HTTP擴展協議,它允許用戶通過Internet訪問分布...

    未知972023-05-25
  • WEB服務器寶塔面板負載狀態(load average)中的數據代表了什么?

    寶塔面板負載狀態(load average)中的數據代表了什么?

    寶塔面板是現在眾多站長選擇的服務器管理軟件,本文主要講解寶塔面板負載狀態(load average)中的數據代表了什么?有需要的朋友可以參考一下。...

    九天博客5792020-05-23
  • WEB服務器phpstudy默認不支持64位php的解決方法

    phpstudy默認不支持64位php的解決方法

    下面小編就為大家帶來一篇phpstudy默認不支持64位php的解決方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 ...

    jingxian4702019-10-17
  • WEB服務器湖北web云服務器價格

    湖北web云服務器價格

    湖北web 云服務器 價格 近年來,隨著互聯網技術的快速發展,云計算技術已經被廣泛應用于各行各業,對于企業來說,云計算技術已經成為提升企業信息化...

    未知1612023-06-07
  • WEB服務器阿里云服務器部署web項目查看

    阿里云服務器部署web項目查看

    阿里 云服務器 部署web項目查看 隨著互聯網的發展,越來越多的企業開始將自己的業務擴展到線上平臺。為了滿足用戶的需求,企業需要部署自己的網站或...

    未知872023-09-07
  • WEB服務器云服務器安裝多個web網站嗎

    云服務器安裝多個web網站嗎

    云服務器 安裝多個web網站 云服務器是一種基于云計算技術的 虛擬主機 服務,可以提供各種云計算基礎設施和服務。作為一個虛擬主機,云服務器可以用于...

    未知1302023-07-12
  • WEB服務器如何將web項目部署到騰訊云服務器

    如何將web項目部署到騰訊云服務器

    如何將Web項目部署到騰訊 云服務器 摘要:本文將詳細介紹如何將Web項目部署到 騰訊云服務器 。包括選擇合適的云服務器實例,配置服務器環境,上傳代碼...

    未知1952023-06-24
主站蜘蛛池模板: 久久看视频 | 免费一级特黄做受大片 | 国内毛片视频 | 国产一区视频在线观看免费 | 国产精品成人一区二区三区吃奶 | 成人不卡在线观看 | 亚洲最新无码中文字幕久久 | www.99久 | 国产美女视频一区二区三区 | 中国的免费的视频 | 午夜精品久久久久久久久久久久久蜜桃 | 泰剧19禁啪啪无遮挡大尺度 | 手机黄色小视频 | 一区二区三区无码高清视频 | 久久精品re| 男人的天堂色偷偷 | 日韩每日更新 | 久久蜜臀一区二区三区av | 国产91大片 | 成人性视频欧美一区二区三区 | 99精美视频 | chinesegv男男猛男无套 | 北原夏美av | 91网视频在线观看 | 国产亚洲精品综合一区 | 全黄性性激高免费视频 | 免费国产成人高清在线看软件 | 九九热精品视频在线免费观看 | 国产精品久久在线观看 | 久久久国产一级片 | 欧美成人做爰高潮片免费视频 | 一级影片在线观看 | 国产分类视频 | 91精品国产一区二区三区动漫 | 亚洲精品a在线观看 | 国产欧美亚洲精品a | 99re热视频这里只精品 | 国内精品久久久久久久影视红豆 | 草久免费 | 成人男女啪啪免费观看网站四虎 | 国产精品高潮99久久久久久久 |