中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

httpd筆記之理論詳解優化配置(Apache)web入門

發布時間:2020-07-08 01:02:32 來源:網絡 閱讀:631 作者:野蠻的螺絲 欄目:建站服務器

Linux的愛之初體驗web服務~~!!!(之所以這么說我覺得這是進入Linux世界的第一個也是重要的一個服務)

文章叫長,懂的隨便看看可能有不對的地方請校正。小白看看也可以理解理解大白話寫的!


http 超文本傳輸協議筆記

傳輸層:tcp/udp提供進程地址

Port number:

tcp:傳輸控制協議,面向連接的協議;通信前需要建立虛擬鏈路;結束后拆除鏈路;數據流通信協議

0-65535 Linux中端口數

udpUser Datagram Protocol,無連接的協議;無連接的數據報文通信協議

0-65535

 

IANA:

0-1023:眾所周知,永久的分配給固定的應用使用,特權端口,22/tcp(ssh), 80/tcp(http), 443/tcp(https)  只有管理員擁有權限注冊使用

1024-41951:亦為注冊端口,但要求并不是特別嚴格,分配給程序注冊為某應用使用,11211/tcp, 11211/udp (memcached), 3306/tcp(mysql)

41952+:客戶端程序隨機使用的端口;動態端口,或私有端口;其范圍的定義:/proc/sys/net/ipv4/ip_local_port_range

客戶端訪問服務器端隨機生成端口,訪問服務器端的某固定端口。

 

套接字Socket: IPC的一種實現,允許位于不同主機(甚至同一主機)上不同進程之間進行通信;從而完成數據交換;也稱為Socket API庫調用接口, 第一次出現在1983年,4.2 BSD系統上(伯克利系統分發版)。

SOCK_STREAMtcp套接字

SOCK_DGRAMudp套接字

SOCK_RAW: 裸套接字不借助UDP/TCP的接口進行通信

 

IPv4:

分類:

A1-127

B128-191

C192-223

D:組播,224-239

E240-254

 

私有地址:

A10.0.0.0/8

B172.16.0.0/16-172.31.0.0/16

C192.168.0.0/24-192.168.255.0/24

 

TCP協議的特性:

建立連接:三次握手

將數據打包成段:校驗和(CRC-32循環冗余檢驗

確認、重傳以及超時:

報文排序:邏輯序號

流量控制:滑動窗口算法有接收緩存控制,快滿時暫停接收發送方流量小的情況下

擁塞控制:慢啟動和擁塞避免算法

 httpd筆記之理論詳解優化配置(Apache)web入門

Socket Domain(根據其所使用的地址):socket又分為三類

AF_INETAddress FamilyIPv4

AF_INET6IPv6

AF_UNIX:同一主機上不同進程之間通信時使用;

 

每類套接字都至少提供了兩種socket:流,數據報

流:可靠地傳遞、面向連接、無邊界;

數據報:不可靠地傳遞、有邊界、無連接;比如寄信,有信封,封裝多封就需要多個

 

套接字相關的系統調用:

socket(): 創建一個套接字;

bind():綁定

listen():監聽

accept():接收請求

connect():請求連接建立

write():發送

read():接收

send(), recv(), 發接

               sendto(), recvfrom() 發接

HTTP協議

http: hyper text transfer protocol, 80/tcp

html: 編程語言,超文本標記語言;

 

<html>

<head>

<title>TITLE</title>

</head>

<body>

<h2></h2>

<p> blabla... <a > blabal </a> </p>

<h3></h3>

</body>

</html>

 

CSS: Cascading Style Sheet  級聯樣式表

js: javascript

 

MIME: Multipurpose Internet Mail Extesion多用途Internet郵件擴展

 

工作機制:

http請求

http響應

 

被請求的內容稱為:Web資源:web resource

靜態文件:.jpg, .gif, .html, .txt, .js, .css, .mp3, .avi

動態文件:.php, .jsp,   (客戶端請求時不是直接反饋給客戶端而是先在服務器端執行一次)

比如:Windows瀏覽器需要借助外部插件來工作,瀏覽器本身不具備打開圖片或視頻等而且根據文件的后綴名來決定借助由客戶端的某個插件來打開

媒體:決定了客戶端的瀏覽器如何打開借助那個插件

媒體類型(MIME類型):major/minor主類型/次類型

text/html  超文本文檔

text/plain  純文本文檔

p_w_picpath/jpeg  

p_w_picpath/gif

 

URI: Uniform Resource Identifier統一資源標識符

URL: Uniform Resorce Locator,用于描述某服務器某特定資源的位置;

Scheme://Server:Port/path/to/resource

http://www.magedu.com/p_w_picpaths/logo.jpg

URN: Uniform Resource Naming統一資源命名

 

http協議版本:

HTTP/0.9:原型版本,功能簡陋

HTTP/1.0:第一個廣泛使用的版本,支持MIME

HTTP/1.1: 增強了緩存功能

Spdy 

HTTP/2.0

 

rfc文檔讀一讀有助于了解 1.1 2.0

一次完整的http請求處理過程:

(1) 建立或處理連接:接收請求或拒絕請求

(2) 接收請求:

接收來自于網絡的請求報文中對某資源的一次請求的過程;

 

并發訪問響應模型(Web I/O):

單進程I/O結構:啟動一個進程處理用戶請求,而且一次只處理一個;多個請求被串行響應;多個請求到來排隊,依次處理

多進程I/O結構:并行啟動多個進程,每個進程響應一個請求;

復用I/O結構:一個進程響應n個請求;借用一個復用I/O 處理器基于事件驅動機制

多線程模型:一個進程生成N個線程,每個線程響應一個用戶請求;

事件驅動:event-driven一個進程內部維持一個類似事件監控器,能夠監控著多個I/O使得一個服務器進程能夠同時連接多個請求針對怎么知道每一個請求的連接與結束,在服務器編程時在內部基于事件回調的機制來完成連接狀態(i/o)的追蹤,并基于回調的狀態來完成連接與結束的響應。

 

復用的多進程/線程--I/O結構:啟動多個(m)進程,每個進程響應n個請求;

 

 

(3) 處理請求:對請求報文進行解析,并獲取請求的資源及請求方法等相關信息

 

元數據:請求報文首部

<method>//請求的方法 <URL>//資源 <VERSION>//版本

Host: www.magedu.com   請求的主機名稱

Connection//指明此次連接使用的方式

 

(4) 訪問資源:獲取請求報文中請求的資源

 

web服務器,即存放了web資源的服務器,負責向請求者提供對方請求的靜態資源,或動態運行后生成的資源;這些資源放置于本地文件系統某路徑下,此路徑通常稱為DocRoot

 

/var/www/html/

p_w_picpaths/1.jpg

 

http://www.magedu.com/p_w_picpaths/1.jpg

 

web服務器資源路徑映射方式:

(a) docroot

(b) alias

(c) 虛擬主機docroot

(d) 用戶家目錄docroot

 

(5) 構建響應報文

 

資源的MIME類型:標記的方法

顯式分類

魔法分類

協商分類

 

URL重定向:

web服務構建的響應并非客戶端請求的資源,而是資源另外一個訪問路徑;

 

(6) 發送響應報文

 

 

(7) 記錄日志

 

http服務器程序:

httpd (apache)

nginx

Lighttpd  //德國人研發輕量級類似Nginx

 

應用程序服務器容器類動靜都能解析

IIS

tomcat, jetty, jboss, resin

webshpere, weblogic, oc4j

 

www.netcraft.com  //查看一些web服務器占用市場的份額

 

httpd的安裝配置和使用:

httpd: apache

a  patchy server = apache

ASF: apache software foundation  //軟件基金會

 

httpd的特性:

高度模塊化:core + modules

DSO: Dynamic Shared Object  動態模塊機制

MPMMultipath Processing Modules  實現多種不同I/O模型機制

prefork:多進程模型,每個進程響應一個請求;每個主進程只負責監聽套接字,接收請求交給子進程處理請求。

一個主進程:負責生成n個子進程,子進程也稱為工作進程,每個子進程處理一個用戶請求;即便沒有用戶請求,也會預先生成多個空閑進程,隨時等待請求到達;最大不會超過1024個;

worker:多線程模型,每個線程響應一個請求;

一個主進程:生成多個子進程,每個子進程負責生個多個線程,每個線程響應一個請求;


event:事件驅動模型,每個線程響應n個請求;

一個主進程:生成m個子進程,每個進程直接n個請求;

m進程,n線程:m*n

httpd-2.2: event為測試使用

httpd-.24event可生產使用

 

CentOS 6:

 

程序環境

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf  //補充性配置文件

服務腳本:

/etc/rc.d/init.d/httpd

服務腳本自己的配置文件:/etc/sysconfig/httpd

主程序文件:

/usr/sbin/httpd       //prefork 默認使用的

/usr/sbin/httpd.event   //event

/usr/sbin/httpd.worker  //worker

日志文件目錄:

/var/log/httpd

access_log: 訪問日志

error_log:錯誤日志  //啟動停止訪問錯誤等信息

站點文檔目錄:

/var/www/html

模塊文件路徑:

/usr/lib64/httpd/modules

 

配置文件的組成:

 ~]# grep "Section" /etc/httpd/conf/httpd.conf

### Section 1: Global Environment   //全局環境配置

### Section 2: 'Main' server configuration  //主服務器配置

### Section 3: Virtual Hosts   ///虛擬主機配置

 

配置格式:directive value  指令對應的值來完成 比如listen 80

directive: 不區分字符大小寫;

value: 為路徑時,取決于文件系統;

 

常用配置:修改完配置文件 httpd -t 或者 service httpd configtest 測試語法

1、修改監聽的IPPort  //修改監聽端口需要restart

Listen [IP:]PORT

 

省略ip表示監聽本機所有IP; Listen可重復出現多次;


2、持久連接

Persistent Connection長連接):連接建立,每個資源獲取完成后不會斷開連接,而是繼續等待其它的請求完成;

如何斷開?

數量限制:100 資源請求默認100

時間限制:可配置   

副作用:對并發訪問量較大的服務器,持久連接功能會使用有些請求得不到響應;

折衷:使用較短的持久連接時間;5

httpd-2.4 支持毫秒級持久時間;

非持久連接

 

KeepAlive On|Off  //是否開啟

MaxKeepAliveRequests # //最大連接請求數量

KeepAliveTimeout #   //連接超時

 

測試:

telnet HOST PORT

GET /URL HTTP/1.1

Host: HOSTNAME or IP

httpd筆記之理論詳解優化配置(Apache)web入門

3MPM

Multipath Process Module:多道處理模塊

prefork, worker, event

 

httpd-2.2不支持同時編譯多個模塊,所以只能編譯時選定一個;rpm安裝的包提供三個二進制程序文件,分別用于實現對不同MPM機制的支持;確認方法:

# ps aux  | grep httpd

httpd筆記之理論詳解優化配置(Apache)web入門


默認為/usr/sbin/httpd, 其使用prefork

查看模塊列表:

查看靜態編譯的模塊

# httpd -l   ///httpd.worker  -l///httpd.event -l

Compiled in modules:

  Core.c   //核心模塊

  Prefork.c   /已經使用的

  http_core.c  //功能核心模塊

  mod_so.c   //支持模塊動態裝卸載的功能

查看所有靜態編譯及動態裝載的模塊

# httpd -M   

 

更換使用的httpd程序:

/etc/sysconfig/httpd

HTTPD=

httpd筆記之理論詳解優化配置(Apache)web入門

重啟服務生效;

 

prefork的配置:

<IfModule prefork.c>

StartServers       8  //服務啟動時啟動多少服務子進程

MinSpareServers    5  //最小空閑進程數

MaxSpareServers   20  //最大空閑進程數

ServerLimit      256   ///在服務器聲明周期內為MaxClients生成數量

MaxClients       256   ///最大并發數

MaxRequestsPerChild  4000  //一個進程最多能夠響應多少次請求然后死掉

</IfModule> 

httpd筆記之理論詳解優化配置(Apache)web入門


worker的配置:

<IfModule worker.c>

StartServers         4    //服務啟動時啟動多少服務子進程

 

MaxClients         300  ///最大并發數,最大啟動的線程數

 

MinSpareThreads     25  //最少空閑線程

MaxSpareThreads     75  //最大空閑線程

ThreadsPerChild     25   //每個進程能夠啟動的線程數

MaxRequestsPerChild  0   //每個線程最大響應的請求數

</IfModule> 

PV, UV

PV: Page View  頁面訪問量

UV: User View  用戶數量

獨立IP有效訪問量;

4DSO

httpd筆記之理論詳解優化配置(Apache)web入門

配置指令實現模塊加載

 

LoadModule <mod_name> <mod_path>

 

模塊路徑可使用相對地址

相對于ServerRoot(/etc/httpd)指向的路徑而言;

/etc/httpd/modules/

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

5、定義'Main' server的文檔頁面路徑

DocumentRoot

httpd筆記之理論詳解優化配置(Apache)web入門

文檔路徑映射:

DocumentRoot指向的路徑為URL路徑的起始位置;

DocumentRoot "/var/www/html"

test/index.html --> http://HOST:PORT/test/index.html

 

6、站點訪問控制

可基于兩種類型的路徑指明對哪些資源進行訪問控制

文件系統路徑:

<Directory ""> </Direcotry>

httpd筆記之理論詳解優化配置(Apache)web入門

<File ""> 

</File>


httpd筆記之理論詳解優化配置(Apache)web入門

訪問控制機制:

基于來源地址;

基于賬號;

7Directory中“基于來源地址”實現訪問控制

httpd筆記之理論詳解優化配置(Apache)web入門


(1) Options  建議關閉(如果是下載網站打開不指定默認網頁可以打開網站上資源,非下載網站是不安全的在沒有定義默認頁的情況下同事http的也沒有做測試頁客戶端打開網站會獲取服務器端的所有網站資源)

比如默認根目錄下存放的沒有默認定義的主頁面(index.html)就會索引到根目錄下其他的文檔。

httpd筆記之理論詳解優化配置(Apache)web入門

所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

  None, All

Indexes: 索引;//當訪問網站目錄下默認主頁面

FollowSymlinks:允許跟蹤符號鏈接文件;允許訪問網站中根目錄下作鏈接的文件

SymLinksifOwnerMatch 允許追蹤鏈接文件和源文件為同一屬主就允許(使用少)

MultiViews  是否允許多視圖(不開啟)(使用少)

 

(2) 基于來源地址的訪問控制機制

Order:檢查次序

Order allow,deny

Order deny,allow

Allow from

Deny from

httpd筆記之理論詳解優化配置(Apache)web入門

來源地址:

IP

NetAddr:

172.16

172.16.0.0

172.16.0.0/16

172.16.0.0/255.255.0.0

 

8、定義默認主頁面  訪問沒有指明自左向右訪問

DirecotryIndex  index.html  index.html.var  index.php

 

9、日志設定

 

錯誤日志:

ErrorLog logs/error_log

LogLevel warn

httpd筆記之理論詳解優化配置(Apache)web入門

debug, info, notice, warn,  error, crit, alert, emerg

                        調試信息、通知、警告、 錯誤、暴擊、警報、緊急

定義warn那么比warn高的級別都將記錄。

訪問日志:

CustomLog logs/access_log combined

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

httpd筆記之理論詳解優化配置(Apache)web入門

%h:客戶端IP地址;

%l: Remote logname (from identd, if supplied). -表示為空;遠程登錄名大多數為空

%u: Remote user,  (from auth; may be bogus if return status (%s) is 401);用戶認證時的用戶名  大多數無需認證-表示為空

%tTime the request was received (standard english format),服務器收到請求的時間;默認為英文格式

%rFirst line of request,請求報文的行信息請求的URL以及協議版本等(method url version)

%>s: 響應狀態碼;

%b: 響應報文的大小,單位是字節,不包括響應報文首部;

%{Referer}i:請求報文當中"referer"首部的值;當前資源的訪問入口,即從哪個頁面中的超鏈接跳轉而來;

%{User-Agent}i:請求報文當中"User-Agent"首部的值;即發出請求用到的應用程序;

httpd筆記之理論詳解優化配置(Apache)web入門

詳情:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

 

10、路徑別名

 

DocumentRoot "/www/htocs"

http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm

--> /www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm

 

Alias /URL/ "/PATH/TO/SOMEDIR/"

 

Alias /3/ "/1/2"

http://www.magedu.com/3/index.html

--> /1/2/3/

 

Alias /bbs/ "/forum/htdocs"

http://www.magedu.com/bbs/index.html

--> /forum/htdocs/bbs/

 

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

11、設定默認字符集

AddDefaultCharset UTF-8

 

GBK, GB2312, GB18030 中文字符

 

12、基于用戶的訪問控制

 

認證質詢:

WWW-Authenticate:響應碼為401,拒絕客戶端請求,并說明要求客戶提供賬號和密碼;

 

認證:

Authorization:客戶端用戶填入賬號和密碼后再次發送請求報文;認證通過,則服務器發送響應的資源;

 

認證類型:

basic:明文

digest:消息摘要

 

安全域:需要用戶認證后方能訪問的路徑;

應該通過名稱對其進行標識,并用于告知用戶認證的原因;

 

用戶的賬號和密碼存儲于何處?

虛擬賬號:僅用于訪問某服務時用到的認證標識;

 

存儲:

文本文件

SQL數據庫

ldap

nis

 

basic認證:

(1) 定義安全域

<Directory ""> //指明路徑

Options None  

AllowOverride None  

AuthType Basic

AuthName "STRING"  ///安全域名稱

AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE" //認證時使用的賬號文件

Require user username1 username2 ...   //所有合法(允許)賬號都行

</Directory>

 

允許賬號文件中的所有用戶登錄訪問:

Require valid-user

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

(2) 提供賬號和密碼存儲(文本文件)

使用htpasswd命令進行管理

htpasswd [options] passwordfile username

-c: 自動創建passwordfile,因此,僅應該在添加第一個用戶時使用;

-m: md5加密用戶密碼;

-s: sha1加密用戶密碼;

-D: 刪除指定用戶

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

(3) 實現基于組進行認證

<Directory "">

Options None

AllowOverride None

AuthType Basic

AuthName "STRING"

AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"

AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"

Require group GROUP1 GROUP2 ...

</Directory>

 

要提供:用戶賬號文件和組文件;

 

組文件:每一行定義一個組

GRP_NAMEuser1 user2 user3 ... 組名 冒號 用戶名用空格分隔

 

 

示例:

<Directory "/www/htdocs/admin">

    Options None

    AllowOverride None

    AuthType Basic

    AuthName "Administator private"

    AuthUserFile "/etc/httpd/conf.d/.htpasswd"

    AuthGroupFile "/etc/httpd/conf.d/.htgroup"

    Require group webadmin

</Directory>

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

13、虛擬主機

 

有三種實現方案:

基于ip

為每個虛擬主機準備至少一個ip地址;

基于port

為每個虛擬主機準備至少一個專用port;實踐中很少使用;

基于hostname

為每個虛擬主機準備至少一個專用hostname

 

可混合使用上述三種方式中任意方式;

 

注意:一般虛擬主機莫與中心主機混用,所以,要使用虛擬主機,先禁用中心主機;

禁用中心主機:注釋DocumentRoot

 

每個虛擬主機都有專用配置:

<VirtualHost "IP:PORT">

SeverName

DocumentRoot ""

</VirtualHost>

 

ServerAlias: 虛擬主機的別名;以下這些都可以定義在虛擬主機中

ErrorLog   

CustomLog

<Directory "">

</Directory>

               ip addr add [ip/mask] dev eth0  /添加新的IP

Ip addr list //查看

示例1:基于ip

<VirtualHost 172.16.100.6:80>

    ServerName web1.magedu.com

    DocumentRoot "/vhosts/web1/htdocs"

</VirtualHost>

 

<VirtualHost 172.16.100.7:80>

    ServerName web2.magedu.com

    DocumentRoot "/vhosts/web2/htdocs"

</VirtualHost>

 

示例2:基于port

<VirtualHost 172.16.100.7:80>

    ServerName web2.magedu.com

    DocumentRoot "/vhosts/web2/htdocs"

</VirtualHost>

 

<VirtualHost 172.16.100.7:8080>

    ServerName web3.magedu.com

    DocumentRoot "/vhosts/web3/htdocs"

</VirtualHost>

httpd筆記之理論詳解優化配置(Apache)web入門

示例3:基于hostname

<VirtualHost 172.16.100.6:80>

    ServerName web1.magedu.com

    DocumentRoot "/vhosts/web1/htdocs"

</VirtualHost>

 

<VirtualHost 172.16.100.6:80>

    ServerName web2.magedu.com

    DocumentRoot "/vhosts/web2/htdocs"

</VirtualHost>

 

<VirtualHost 172.16.100.6:80>

    ServerName web3.magedu.com

    DocumentRoot "/vhosts/web3/htdocs"

</VirtualHost>

 

14、內置的status頁面  //內置狀態頁面

<Location /server-status>

    SetHandler server-status

    Order deny,allow

    Deny from all

    Allow from 172.16

</Location>

httpd筆記之理論詳解優化配置(Apache)web入門

httpd筆記之理論詳解優化配置(Apache)web入門

實現:基于賬號實現訪問控制


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

于田县| 库伦旗| 花莲县| 天长市| 西峡县| 珠海市| 黄冈市| 民乐县| 吉安县| 衡山县| 昭平县| 邯郸市| 舟山市| 宜黄县| 阳江市| 龙川县| 陆河县| 岳阳县| 福建省| 南召县| 新巴尔虎左旗| 正阳县| 吉安市| 乌海市| 临西县| 岫岩| 息烽县| 林州市| 阿尔山市| 罗平县| 周宁县| 巴里| 筠连县| 永定县| 甘洛县| 通辽市| 河源市| 江孜县| 女性| 土默特左旗| 沅江市|