HTTP的基礎配置

目錄:

1.修改監聽的IP和PORT
2.持久連接(保持連接,長連接)
3.MPM
4.DSO
5.定義’Main’ server_name的文檔頁面路徑
6.站點訪問控制常見機制
7.定義站點主頁面:
8.定義路徑別名
9.設定默認字符集
10.日志設定
11.基于用戶的訪問控制
12.虛擬主機
13.status頁面
14.curl/ab命令
15.使用mod_deflate模塊壓縮頁面優化傳輸速度

1、修改監聽的IP和PORT:

Listen [IP-address:]portnumber [protocol]
(1) 省略IP表示為0.0.0.0;
(2) Listen指令可重復出現多次;
        Listen 80
        Listen 8080
(3) 修改監聽socket,重啟服務進程方可生效;
(4) 限制其必須通過ssl通信時,protocol需要定義為https;

2、持久連接(保持連接,長連接):

Persistent Connection:tcp連續建立后,每個資源獲取完成后不全斷開連接,而是繼續等待其它資源請求的進行;
如何斷開?
    ·數量限制

    ·時間限制

副作用:對并發訪問量較大的服務器,長連接機制會使得后續某些請求無法得到正常 響應;
折衷:使用較短的持久連接時長,以及較少的請求數量;
        KeepAlive On|Off
        KeepAliveTimeout 15
        MaxKeepAliveRequests 100

注意:httpd-2.4的KeepAliveTimeout可是毫秒級;

KeepAliveTimeout num[ms]

3、MPM:

httpd2.2版本
    ·查看靜態編譯的模塊:
        # httpd -l
    ·查看靜態編譯及動態編譯的模塊:
        # httpd -M
    ·查看是否有其他MPM模塊
        # httpd.worker -l
        # httpd.event -l
    修改MPM模塊類型
        vim /etc/sysconfig/httpd
        HTTPD=/usr/sbin/httpd.{worker,event}

httpd2.4版本

    修改MPM模塊類型

        vim /etc/httpd/conf.modules.d/00-mpm.conf

注意:重啟服務進程方可生效
修改MPM屬性:
vim /etc/httpd/conf/httpd.conf
prefork的配置
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
worker的配置:
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0

</IfModule>

4、DSO:

配置指定實現模塊加載
httpd2.2,編輯vim /etc/httpd/conf/httpd.conf
    LoadModule <mod_name> <mod_path>
httpd2.4,編輯vim /etc/httpd/conf.modules.d/00-base.conf
    LoadModule <mod_name> <mod_path>
    模塊文件路徑可使用相對路徑:
    相對于ServerRoot(默認/etc/httpd)

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

ServerName
語法格式: ServerName [scheme://]fully-qualified-domain-name[:port]
DocumentRoot “”

6、站點訪問控制常見機制:

httpd-2.2:
order和allow、deny
order:定義生效次序;寫在后面的表示默認法則;
Allow from, Deny from
來源地址:
IP
NetAddr:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0


httpd-2.4:

基于IP控制:
<RequireAll>
Require ip IP地址或網絡地址
Require not ip IP地址或網絡地址
</RequireAll>
基于主機名控制:
Require host 主機名或域名
Require not host 主機名或域名
要放置于<RequireAll>配置塊中或<RequireAny>配置塊中;
Options:
后跟1個或多個以空白字符分隔的“選項”列表;
Indexes:指明的URL路徑下不存在與定義的主頁面資源相符的資源文件時,返回索引列表給用戶;
FollowSymLinks:允許跟蹤符號鏈接文件所指向的源文件;
None:
All:All options except for MultiViews.

7、定義站點主頁面

DirectoryIndex index.html index.html.var

8、定義路徑別名:

格式:
Alias /URL/ “/PATH/TO/SOMEDIR/”
示例:
Alias /download/ “/rpms/pub/”
http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm
/rpms/pub/bash-4.4.2-3.el6.x86_64.rpm

9、設定默認字符集:

AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030

10、日志設定:

日志類型:訪問日志 和 錯誤日志
錯誤日志:
ErrorLog logs/error_log
LogLevel warn
#日志等級:Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
訪問日志:
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
CustomLog logs/access_log combined
LogFormat format strings:
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
    %h:客戶端IP地址;
    %l:Remote User, 通常為一個減號(“-”);
    %u:Remote user (from auth; may be bogus if return status (%s) is 401);非為登錄訪問時,其為一個減號;
    %t:服務器收到請求時的時間;
    %r:First line of request,即表示請求報文的首行;記錄了此次請求的“方法”,“URL”以及協議版本;
    %>s:響應狀態碼;
    %b:響應報文的大小,單位是字節;不包括響應報文的http首部;
    %{Referer}i:請求報文中首部“referer”的值;即從哪個頁面中的超鏈接跳轉至當前頁面的;
    %{User-Agent}i:請求報文中首部“User-Agent”的值;即發出請求的應用程序;

11、基于用戶的訪問控制

認證質詢:
WWW-Authenticate:響應碼為401,拒絕客戶端請求,并說明要求客戶端提供賬號和密碼;
認證:
Authorization:客戶端用戶填入賬號和密碼后再次發送請求報文;認證通過時,則服務器發送響應的資源;
認證方式有兩種:
basic:明文
digest:消息摘要認證
安全域:需要用戶認證后方能訪問的路徑;應該通過名稱對其進行標識,以便于告知用戶認證的原因;


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
(2) 生成提供賬號和密碼存儲(文本文件)
使用專用命令完成此類文件的創建及用戶管理


htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username

    -c:自動創建此處指定的文件,因此,僅應該在此文件不存在時使用;
    -m:md5格式加密
    -s: sha格式加密
    -D:刪除指定用戶
    -b:批模式添加用戶
htpasswd -m [options] /PATH/TO/HTTPD_PASSWD_FILE username password
另外:基于組賬號進行認證;
(1) 定義安全域
    <Directory “”>
    Options None
    AllowOverride None
    AuthType Basic
    AuthName “String“
    AuthUserFile “/PATH/TO/HTTPD_USER_PASSWD_FILE”
    AuthGroupFile “/PATH/TO/HTTPD_GROUP_FILE” #定義組用戶文件位置
    Require group grpname1 grpname2 …
    </Directory>
(2) 創建用戶賬號和組賬號文件;
    定義組用戶文件
    vim /PATH/TO/HTTPD_GROUP_FILE
    組文件:每一行定義一個組
    GRP_NAME: username1 username2 …

12、虛擬主機

有三種實現方案:
·基于ip:
為每個虛擬主機準備至少一個ip地址;
·基于port:
為每個虛擬主機使用至少一個獨立的port;
·基于FQDN:
為每個虛擬主機使用至少一個FQDN;
虛擬主機的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot “”
</VirtualHost>


基于IP的虛擬主機示例:

<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.7:80>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
基于端口的虛擬主機:
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.6:808>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.6:8080>
ServerName www.c.org
DocumentRoot “/www/c.org/htdocs”
</VirtualHost>


基于FQDN的虛擬主機:

<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.6:80>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
注意:如果是httpd-2.2,則使用基于FQDN的虛擬主機時,需要事先使用如下指令:
NameVirtualHost IP:PORT

13、status頁面:

需要加上以下這一條
LoadModule status_module modules/mod_status.so
httpd-2.2
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 172.16
</Location>
httpd-2.4
<Location /server-status>
SetHandler server-status
<RequireAll>
Require ip 172.16
</RequireAll>
</Location>

14、curl,ab命令

curl
-A/–user-agent <string> #設置用戶代理發送給服務器
–basic 3使用HTTP基本認證
–tcp-nodelay #使用TCP_NODELAY選項
-e/–referer <URL> #來源網址
–cacert <file> #CA證書 (SSL)
–compressed #要求返回是壓縮的格式
-H/–header<line> #自定義首部信息傳遞給服務器
-I/–head #只顯示響應報文首部信息
–limit-rate <rate> #設置傳輸速度
-u/–user <user[:password]>#設置服務器的用戶和密碼
-0/–http1.0 #使用HTTP 1.0
ab:
-n:總請求數;
-c:模擬的并行數;
-k:以持久連接模式 測試;

15、使用mod_deflate模塊壓縮頁面優化傳輸速度

編輯vim /etc/http/conf.d/名字.conf,加入以下代碼:
# 加入壓縮模塊
SetOutputFilter DEFLATE
# 限制對這些MIME類型的壓縮
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
# 設置壓縮等級
DeflateCompressionLevel 9

httpd反代proxy_fcgi:

示例:
    <VirtualHost *:80>
        ServerName www.b.net
        DocumentRoot /apps/vhosts/b.net
        DirectoryIndex index.php
        ProxyRequests Off
        ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
        <Directory “/apps/vhosts/b.net”>
            Options None
           AllowOverride None
            Require all granted
        </Directory>
    </VirtualHost>

原創文章,作者:z long,如若轉載,請注明出處:http://www.www58058.com/84182

(0)
z longz long
上一篇 2017-08-08 08:32
下一篇 2017-08-08 13:05

相關推薦

  • N25期–第十三周作業

    1、 建立samba共享,共享目錄為/data,要求:(描述完整的過程)  1)共享名為shared,工作組為magedu;  2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名;  3)添加sam…

    Linux干貨 2017-04-05
  • rpm與yum的初步學習

    rpm與yum的初步學習   我們在使用linux系統時需要安裝和卸載軟件,我們這節就先來看一下rpm和yum的初步簡單實用。 linux軟件安裝:   安裝程序的方式:      通用二進制格式:直接解壓壓縮文件,就可以使用。但一定要注意安裝平臺。     &nbsp…

    Linux干貨 2016-08-24
  • Linux的硬鏈接與軟鏈接

    Linux 的硬鏈接與軟鏈接 文件由文件名與數據組成,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 inode 號(inode…

    Linux干貨 2016-10-25
  • FHS文件系統介紹及各目錄功能說明

    作者:M21-陸東貴 FHS文件系統介紹及各目錄功能說明 FHS簡介 Filesystem Hierarchy Standard(文件系統目錄標準)的縮寫,多數Linux版本采用這種文件組織形式,類似于Windows操作系統中c盤的文件目錄,FHS采用樹形結構組織文件。FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾…

    Linux干貨 2016-10-18
  • zabbix表分區(適用于zabbix2.0.x,zabbix2.2.x和zabbix2.4.x)

    本文主要介紹了zabbix進行數據庫表分區的方法:         在系統監控中,zabbix已經代替了nagios+cacti,zabbix以其良好的圖形展示和高度自定義贏得了很多運維人員的喜愛。但是由于在工作中,zabbix跑的時間過長(我們公司跑了將近3年),web頁面經??D,監控…

    Linux干貨 2015-10-27
  • bash的基本特性之globbing,IO重定向及管道

    bash的基本特性之globbing,IO重定向及管道 giobbing:文件名通配 在bash的操作環境中有一個分廠有用的功能那就是gilobbing:文件名通配,這樣我們在處理數據的時候就更方便了。下面我們來羅列一些常用的通配符。(注:globbing是做整體的文件名匹配而非部分) 匹配模式:元字符 *:表示匹配任意長度的任意字符  &nbsp…

    Linux干貨 2016-12-19
欧美性久久久久