溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

httpd-2.2 配置及用法是什么

發(fā)布時(shí)間:2022-01-24 14:08:47 來源:億速云 閱讀:86 作者:柒染 欄目:開發(fā)技術(shù)

httpd-2.2 配置及用法是什么,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。


1、監(jiān)聽的套接字

Listen [IP:]port

此指令可以出現(xiàn)多次, 用于指定監(jiān)聽多個(gè)不同的套接字:

Listen 80

Listen 192.168.1.116:8080

2、配置文件中使用的 keep alive

目前多數(shù)的瀏覽器都請(qǐng)求服務(wù)器保持持續(xù)連接,這種功能就稱為“KeepAlive”,它是HTTP1.1中的標(biāo)準(zhǔn)規(guī)格,一般是用來強(qiáng)化服務(wù)器的性能。在使用保持連接功能時(shí),設(shè)置客戶一次請(qǐng)求連接能影響文件的最大上限,建議把默認(rèn)值設(shè)為ON,以便提高訪問性能。但當(dāng)使用負(fù)載均衡時(shí),會(huì)影響負(fù)載均衡的效果,在未斷開連接之前,同義客戶端始終被定向到同一臺(tái)服務(wù)器。

KeepAlive {On|Off}

    KeepAliveTimeout 2                  #超時(shí)時(shí)間

    MaxKeepAliveRequests 50       #長(zhǎng)連接最大請(qǐng)求數(shù)

3、MPM

   #判定模塊是否存在
        StartServers: 默認(rèn)啟動(dòng)的工作進(jìn)程數(shù);   #不包括主進(jìn)程,主進(jìn)程只是負(fù)責(zé)子進(jìn)程的創(chuàng)建回收等
        MinSpareServers: 最少空閑進(jìn)程數(shù);
        MaxSpareServers: 最大空閑進(jìn)程數(shù);
        ServerLimit: 最大活動(dòng)進(jìn)程數(shù);
        MaxClients: 并發(fā)請(qǐng)求的最大數(shù);   #請(qǐng)求連接進(jìn)來不一定會(huì)活動(dòng),要小于等于serverlimit
        MaxRequestsPerChild: 每個(gè)子進(jìn)程在生命周期內(nèi)所能夠服務(wù)的最多請(qǐng)求個(gè)數(shù);
  prefork.c>  
 
   
        StartServers:?jiǎn)?dòng)的子進(jìn)程的個(gè)數(shù)
        MaxClients: 并發(fā)請(qǐng)求的最大數(shù);
        MinSpareThreads:最小空閑線程數(shù);
        MaxSpareThreads:最大空閑線程數(shù);
        ThreadsPerChild:每個(gè)子進(jìn)程可生成的線程數(shù);
        MaxRequestsPerChild:每個(gè)子進(jìn)程在生命周期內(nèi)所能夠服務(wù)的最多請(qǐng)求個(gè)數(shù),0表示不限定;
  prefork.c>

4、DSO模塊加載方式

   LoadModule module_name /path/to/module

如果使用相對(duì)路徑,則對(duì)于ServerRoot所定義的位置而言;例如:

 LoadModule php5_module /usr/lib64/httpd/modules/php5.so

讓服務(wù)重載配置文件方能生效;

httpd -M: 列出已經(jīng)裝載的所有DSO及非DSO模塊
httpd -l: 列出支持使用的非DSO模塊

默認(rèn)使用prefork模塊,若想使用worker,則修改腳本配置文件:

[root@localhost conf]# vim /etc/sysconfig/httpd 
 
#HTTPD=/usr/sbin/httpd.worker    #啟用此項(xiàng),修改所使用的二進(jìn)制程序

5、配置站點(diǎn)根目錄

DocumentRoot /path/to/somewhere

Apache服務(wù)器存放網(wǎng)頁(yè)的路徑,默認(rèn)所有要求提供HTTP服務(wù)的連接,都以這個(gè)目錄為主目錄,默認(rèn)為 /var/www/html。

6、配置頁(yè)面訪問屬性

           Options:
         Indexes: 缺少指定的默認(rèn)頁(yè)面時(shí),允許將目錄中的所有文件以列表形式返回給用戶,危險(xiǎn);
         FollowSymLinks: 允許跟隨符號(hào)鏈接所指向的原始文件;
         None: 所有都不啟用;
         All: 所有都啟用;
         ExecCGI: 允許使用mod_cgi模塊執(zhí)行CGI腳本;
         Includes: 允許使用mod_include模塊實(shí)現(xiàn)服務(wù)器端包含(SSI); 
         MultiViews:允許使用mod_negotiation實(shí)現(xiàn)內(nèi)容協(xié)商;
         SymLinksIfOwnerMatch:在鏈接文件屬主屬組與原始文件的屬主屬組相同時(shí),允許跟隨符號(hào)鏈接所指向的原始文件; 可以配置網(wǎng)站目錄下的訪問屬性,使用可以基于正則表達(dá)式的匹配,但是一般不建議使用,會(huì)耗費(fèi)時(shí)間。類似的指令還有: 
 : 配置URL訪問屬性,與相似(可以配置像內(nèi)生的status頁(yè)面或者定義了別名的路徑等);   : 限定單個(gè)文件的訪問屬性;
   : 相當(dāng)于Location ~  ,但一般建議使用此配置進(jìn)行正則匹配;

如果某要配置其屬性的URL能映射到某具體文件系統(tǒng)路徑,建議使用。

7、基于主機(jī)的訪問控制

 		        Options
        AllowOverride None    #AllowOverride表示以下基于ip的訪問控制是否被禁用,none表示不被禁用
        Order Deny,Allow        #后面的表示默認(rèn)規(guī)則
        Allow
        Deny

基于IP控制:

       Allow from
        Deny from
            IP, Network Address
            172.16
            172.16.0.0
            172.16.0.0/16
            172.16.0.0/255.255.0.0

二者都匹配或二者都無匹配項(xiàng)時(shí),則以后者為準(zhǔn);否則,則以匹配到的為準(zhǔn);

8、定義默認(rèn)主頁(yè)面

DirectoryIndex index.php index.html home.html default.html  #自左而右依次找

9、用戶主頁(yè)

如果期望讓每個(gè)用戶都可以創(chuàng)建個(gè)人站點(diǎn):http://Server_IP/~Username/

  userdir disablied: 禁止
  userdir public_html:public_html是用戶家目錄下的目錄名稱,所有位于此目錄中的文件均可通過前述的訪問路徑進(jìn)行訪問

配置用戶主頁(yè)示例:

[root@localhost conf]# vim httpd.conf  #首先在配置文件中啟用以下選項(xiàng)
 
 366     #UserDir disabled
 367 
 368     UserDir public_html
 
[root@localhost httpd]# service httpd reload
[root@localhost conf]# useradd feiyu
[root@localhost conf]# su -  feiyu
[feiyu@localhost ~]$ mkdir public_html
[feiyu@localhost ~]$ cd public_html/
[feiyu@localhost public_html]$ echo "hello feiyu"  > index.html

此時(shí)可以訪問了。但apache用戶沒有權(quán)限讀取文件,所以還得定義訪問權(quán)限

[feiyu@localhost ~]$ ls -ld /home/feiyu/
drwx------. 6 feiyu feiyu 4096 Feb 15 20:42 /home/feiyu/
[feiyu@localhost ~]$ setfacl -m u:apache:x /home/feiyu/
[feiyu@localhost ~]$ getfacl /home/feiyu/
getfacl: Removing leading '/' from absolute path names
# file: home/feiyu/
# owner: feiyu
# group: feiyu
user::rwx
user:apache:--x
group::---
mask::--x
other::---
[feiyu@localhost ~]$ curl 192.168.1.117/~feiyu/
hello feiyu

10、配置日志功能

默認(rèn)日志目錄:/var/log/httpd/

 access.log: 訪問日志,其需要記錄的內(nèi)容需要自定義
 
 error.log: 錯(cuò)誤日志

訪問日志:CustomLog “/path/to/access_log_file” Format_Name #CustomLog自定義訪問日志路徑LogFormat Format_String Format_Name

%h: 客戶端地址

%l: 遠(yuǎn)程登錄名,通常為-

%u: 認(rèn)證時(shí)的遠(yuǎn)程用戶名,沒有認(rèn)證時(shí)為-

%t: 收到請(qǐng)求時(shí)的時(shí)間;

%r: 請(qǐng)求報(bào)文的起始行;

%>s: 響應(yīng)狀態(tài)碼;

%b: 響應(yīng)報(bào)文的長(zhǎng)度,單位為字節(jié)

%{Header_Name}i: 記錄指定請(qǐng)求報(bào)文首部的內(nèi)容(value);

詳情請(qǐng)參考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

錯(cuò)誤日志: ErrorLog

11、路徑別名

  Alias /alias/ "/path/to/somewhere/"

意味著訪問http://Server_IP/alias/時(shí),其頁(yè)面文件來自于/path/to/somewhere這個(gè)位置;
注意:前后路徑要一致,結(jié)尾都有”/”或者都沒有

12、設(shè)定默認(rèn)字符集

    AddDefaultCharset  UTF-8

定義cgi腳本路徑別名:

    CGI: Common Gateway Interface協(xié)議(執(zhí)行某些文件時(shí)要以管理員的權(quán)限執(zhí)行,已經(jīng)很少被使用了)

13、CGI腳本路徑別名

CGI: Common Gateway Interface協(xié)議(執(zhí)行某些文件時(shí)要以管理員的權(quán)限執(zhí)行,已經(jīng)很少被使用了)

定義cgi腳本路徑別名:

ScriptAlias /URL/ "/path/to/somewhere/"   #使用此種方法定義文件則被使用cgi協(xié)議執(zhí)行或者顯式使用execcgi

14、基于用戶的訪問控制

當(dāng)你的網(wǎng)站或者站點(diǎn)的某個(gè)路徑只想讓你授權(quán)的用戶訪問時(shí),就可以使用基于用戶的訪問控制。

虛擬用戶:可以使用文件,SQL數(shù)據(jù)庫(kù)或者ldap等機(jī)制進(jìn)行認(rèn)證。認(rèn)證類型(auth):basic: 基本認(rèn)證,帳號(hào)和密碼明文發(fā)送;

digest:摘要認(rèn)證,hash編程之后發(fā)送,大多瀏覽器不支持;

認(rèn)證提供者(authentication provider):帳號(hào)和密碼的存放位置

授權(quán)機(jī)制(authorization):根據(jù)什么進(jìn)行授權(quán)

例:基于文件,做基本認(rèn)證,根據(jù)用戶和組進(jìn)行授權(quán)

使用htpasswd命令生成認(rèn)證庫(kù)

htpasswd:
 
-c #第一次使用-c創(chuàng)建新文件,不是第一次不要使用此選項(xiàng)
-m #用戶密碼使用MD5加密后存放
-s #用戶密碼使用SHA加密后存放
-p #用戶密碼不加密
-d #禁用一個(gè)賬戶
-e #啟用一個(gè)賬戶

[root@localhost fin]# htpasswd -c -m /etc/httpd/conf/.htpasswd feiyu     #第一次需要使用-c選項(xiàng)創(chuàng)建文件
New password: 
Re-type new password: 
Adding password for user feiyu
[root@localhost fin]# htpasswd -m /etc/httpd/conf/.htpasswd feiyu1
New password: 
Re-type new password: 
Adding password for user feiyu1

配置認(rèn)證機(jī)制

         Options None
        AllowOverride AuthConfig
        AuthType Basic
        AuthName "Private Area"
    #	AuthBasicProvider file                    #可以不用指,默認(rèn)為文件
        AuthUserFile /etc/httpd/conf/.htpasswd     #所使用的認(rèn)證文件
        Require valid-user      #允許文件中的所有合法賬號(hào)

訪問界面如下所示:

httpd-2.2 配置及用法是什么

基于組進(jìn)行認(rèn)證

先創(chuàng)建用戶再創(chuàng)建組文件:

     組文件格式:
 
        組名: 用戶1 用戶2 用戶3

            Options None
        AllowOverride AuthConfig
        AuthType Basic
        AuthName "Private Area"
    #	AuthBasicProvider file
        AuthUserFile /etc/httpd/conf/.htpasswd
        AuthGroupFile /etc/httpd/conf/.htgroup      #所使用的組文件
        Require group GroupName
     ">

15、虛擬主機(jī)

虛擬主機(jī)意即一個(gè)物理服務(wù)器提供多個(gè)站點(diǎn),以前剛建站時(shí)使用的是阿里云的免費(fèi)虛擬主機(jī),我想應(yīng)該就是基于此方法配置的。虛擬主機(jī)的實(shí)現(xiàn)方法有三種:

基于不同的IP實(shí)現(xiàn)不同的虛擬主機(jī):變化IP

基于不同的port實(shí)現(xiàn)不同的虛擬主機(jī):變化port

基于不同的FQDN實(shí)現(xiàn)不同的虛擬主機(jī):變化ServerName的參數(shù)

配置使用虛擬主機(jī):

(1)注釋中心主機(jī),并啟用相關(guān)配置

[root@localhost http]# vim /etc/httpd/conf/httpd.conf
 
DocumentRoot "/var/www/html"     #注釋中心主機(jī)
 
NameVirtualHost *:80    #使用基于域名的虛擬主機(jī)時(shí)需要啟動(dòng)此項(xiàng),并且下面的配置與其保持一致,在 httpd-2.4 中不需要使用

(2)基于ip的虛擬主機(jī):

   
        ServerName www.feiyu1.com
        DocumentRoot "/var/www/html/feiyu1"  
        ServerName www.feiyu2.com
        DocumentRoot "/var/www/html/feiyu2"

(3)基于端口的虛擬主機(jī):

        ServerName www.feiyu1.com
        DocumentRoot "/var/www/html/feiyu1"

 192.168.1.117:8080> ServerName www.feiyu2.com DocumentRoot “/var/www/html/feiyu2”

(4)基于域名的虛擬主機(jī):

NameVirtualHost *:80
         ServerName www.feiyu1.com
        DocumentRoot "/var/www/html/feiyu1"
        CustomLog "/var/log/httpd/feiyu1-access_log" combined         ServerName www.feiyu2.com
        DocumentRoot "/var/www/html/feiyu2"
        CustomLog "/var/log/httpd/feiyu2-access_log" combined

16、啟用 https 協(xié)議

https是在http的基礎(chǔ)上進(jìn)行ssl/tls加密實(shí)現(xiàn)的結(jié)果,啟用https固然更安全,不會(huì)存在流量劫持等風(fēng)險(xiǎn),但使用https就不再是三次握手了,它會(huì)增加建立連接的時(shí)間。

http與https首次請(qǐng)求對(duì)比圖:

httpd-2.2 配置及用法是什么

httpd-2.2 配置及用法是什么

http: 文本協(xié)議,80/tcphttps: 二進(jìn)制格式的協(xié)議, 443/tcpSSL握手要完成的工作:

交換協(xié)議版本號(hào)

選擇雙方都支持的加密方式

對(duì)兩端實(shí)現(xiàn)身份驗(yàn)正

密鑰交換

SSL會(huì)話基于IP地址進(jìn)行,不支持在基于FQDN的虛擬主機(jī)上實(shí)現(xiàn),所以在只有一個(gè)公網(wǎng)IP的服務(wù)器上使用虛擬主機(jī)時(shí),只能為一個(gè)站點(diǎn)使用https。

配置支持https:

(1)安裝httpd支持ssl模塊

[root@localhost ~]# yum install mod_ssl -y

(2)自建CA

[root@localhost ~]# cd /etc/pki/CA
[root@localhost ~]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
[root@localhost ~]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

(3)生成私鑰

[root@localhost ~]# cd /etc/httpd/conf/
[root@localhost ~]# mkdir ssl
[root@localhost ~]# cd ssl
[root@localhost ~]# (umask 077; openssl genrsa -out httpd.key 1024)

(4)生成證書申請(qǐng)

[root@localhost ~]# openssl req -new -key httpd.key -out httpd.csr

(5)CA簽署證書

[root@localhost ~]# openssl ca -in httpd.csr -out httpd.crt -days 365

(6)修改httpd的ssl配置文件

[root@localhost ~]# vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/html/feiyu1"
ServerName www.feiyu.com
SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key

(7)驗(yàn)證導(dǎo)入瀏覽器

驗(yàn)證,可以使用以下命令進(jìn)行驗(yàn)證或者將證書導(dǎo)入到瀏覽器并進(jìn)行訪問:

# openssl s_client -connect IP:port -CAfile /path/to/CA_certificate_file

17、服務(wù)器status頁(yè)面

status頁(yè)面是httpd內(nèi)生的,且此信息可以通過web予以顯示,此信息是關(guān)于服務(wù)器的運(yùn)行狀態(tài)的所以不能對(duì)所有人都顯示。

[root@localhost html]# vim /etc/httpd/conf/httpd.confSetHandler server-status
AuthType Basic
AuthName "Server Status"
AuthUserFile "/etc/httpd/conf/.htpasswd"
Require valid-user
Order deny,allow
Allow from all

SetHandler: 顯式的定義使用的處理器 ,是當(dāng)文件被調(diào)用時(shí),Apache內(nèi)部表示形式;一般每種文件類型都有其隱式處理器;

18、使用mod_deflate模塊壓縮頁(yè)面優(yōu)化傳輸速度

一般當(dāng)CPU多空閑,帶寬壓力大時(shí)才會(huì)啟用壓縮,啟用壓縮不但能優(yōu)化傳輸速度也能節(jié)約帶寬,但是其一個(gè)弊端就是會(huì)使緩存的命中率下降。

[root@localhost html]# vim /etc/httpd/conf/httpd.conf
 
SetOutputFilter DEFLATE    #啟用deflate
 
 [root@localhost conf.d]# vim deflate.conf
 
    # Restrict compression to these MIME types    定義要壓縮的文件類型 
    AddOutputFilterByType DEFLATE text/plain 
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE text/css
 
    # Level of compression (Highest 9 - Lowest 1)
    DeflateCompressionLevel 9                     #壓縮比,默認(rèn)為6
     
    # Netscape 4.x has some problems.
    BrowserMatch ^Mozilla/4 gzip-only-text/html
     
    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
     
    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

19、資源限定

軟限制:可以超出的限制,但僅超出一定時(shí)長(zhǎng);

硬限制:絕對(duì)不能超出的限制

使用 ulimit 可以修改軟限制:

-n [N]: 顯示或限定能打開的最大的文件句柄數(shù);

-u [N]: 所能夠運(yùn)行的最多進(jìn)程數(shù);

其相對(duì)應(yīng)的配置文件為:/etc/security/limits.conf,擴(kuò)展配置:/etc/security/limits.d/*.conf

root@tianfeiyu # vim /etc/security/limits.conf #設(shè)定硬限制
apache hard nofile   65535  #設(shè)定能打開的最大文件數(shù)
apache hard nproc 30000#設(shè)定能打開的最大進(jìn)程數(shù)

20、httpd程序包自帶的工具介紹

httpd:Apache 服務(wù)器。

apachectl:Apache HTTP 服務(wù)器控制工具。

ab:Apache HTTP 服務(wù)器性能基準(zhǔn)工具。

apxs:Apache 擴(kuò)展工具。

configure:配置源代碼。

dbmmanage:為基本認(rèn)證創(chuàng)建和更新 DBM 格式的用戶認(rèn)證文件。

htcacheclean:清理磁盤緩存。

htdigest:為摘要認(rèn)證創(chuàng)建和更新用戶認(rèn)證文件。

htdbm:操作 DBM 密碼數(shù)據(jù)庫(kù)。

htpasswd:為基本認(rèn)證創(chuàng)建和更新用戶認(rèn)證文件。

httxt2dbm:為 RewriteMap 創(chuàng)建 dbm 文件。

logresolve:將 Apache 日志文件中的 IP 地址解析到主機(jī)名稱。

rotatelogs:不關(guān)閉 Apache 而切換日志文件。

suexec:執(zhí)行外部程序前切換用戶。

運(yùn)行目錄:/etc/httpd

配置文件:

主配置:/etc/httpd/conf/httpd.conf

擴(kuò)展配置:/etc/httpd/conf.d/*.conf

Socket: 80/tcp, 443/tcp

文檔根目錄:/var/www/html

CGI目錄:/var/www/cgi-bin/
MPM(Multipath Processing Module):多道處理模塊,非一個(gè)模塊,而是對(duì)一種特性的稱謂

多進(jìn)程模型 prefork: 一個(gè)進(jìn)程響應(yīng)一個(gè)請(qǐng)求(主進(jìn)程創(chuàng)建進(jìn)程響應(yīng))

多線程模型 worker: 一個(gè)主進(jìn)程多個(gè)子進(jìn)程,一個(gè)進(jìn)程生成多個(gè)線程,一個(gè)線程響應(yīng)一個(gè)請(qǐng)求,一個(gè)進(jìn)程生成的線程數(shù)有限

事件模型 event: 一個(gè)線程響應(yīng)多個(gè)請(qǐng)求,基于事件驅(qū)動(dòng)機(jī)制來維持多個(gè)用戶請(qǐng)求;

event-driven: 事件驅(qū)動(dòng),主要目的在于實(shí)現(xiàn)單線程響應(yīng)多個(gè)請(qǐng)求;

httpd配置目錄信息:服務(wù)腳本:/etc/rc.d/init.d/httpd腳本配置文件:/etc/sysconfig/httpd
高度模塊化:DSO(Dynamic Shared Object)動(dòng)態(tài)化裝飾模塊

MPM(Multipath Processing Module):多道處理模塊,非一個(gè)模塊,而是對(duì)一種特性的稱謂

看完上述內(nèi)容,你們掌握httpd-2.2 配置及用法是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI