## 標準模塊
標準模塊作為apache的一部分,由apache軟件基金會進行發布和維護,可以動態刪除和加載;如果需要動態加載,則**mod_so.c**模塊必須以靜態鏈接方式編譯到apache中。
## 訪問控制模塊 [mod_authz_core][1]
適用范圍:`directory`, `.htaccess`
用法
~~~
Require [not] entity-name [entity-name]
~~~
### Example Configuration
~~~
Require all granted
Require all denied
Require ip 10 172.20 192.168.2
~~~
---
## 訪問控制模塊 [mod_authz_host][3]
提供基于主機名、IP地址、請求特征的訪問控制,指令用在<Directory>, <Files>, <Location>段中,也用于.htaccess文件中控制對服務器特定部分的訪問
### Deny,Allow
Deny指令在Allow指令之前被評估。默認**允許所有訪問**。任何不匹配Deny指令或者匹配Allow指令的客戶都被允許訪問。
### Allow,Deny
Allow指令在Deny指令之前被評估。默認**拒絕所有訪問**。任何不匹配Allow指令或者匹配Deny指令的客戶都將被禁止訪問。
---
## 限速模塊 [mod_ratelimit][2]
此模塊用來限制每個客戶端的下載速率,rate-initial-burst available in httpd 2.4.24 and later
**httpd 2.4 已測**
### Example Configuration
限速的單位為kb
~~~
<Location "/downloads">
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 400
SetEnv rate-initial-burst 512
</Location>
~~~
---
## Apache模塊 mod_headers
這個模塊提供了一些指令用于控制和修改HTTP請求頭和應答頭。這些頭可以被合并、替換、刪除。
### 處理順序
由mod_headers提供的指令幾乎可以出現在配置文件的任何部分。并可以封裝在配置段中以限制其作用范圍。
指令的處理順序很重要,它取決于指令本身在配置文件中的位置和所屬配置段在配置文件中的位置。下面的指令如果顛倒一下順序將會導致完全不同的結果:
~~~
RequestHeader append MirrorID "mirror 12"
RequestHeader unset MirrorID
~~~
當前順序下,MirrorID頭不會被設置。若顛倒一下順序,MirrorID頭將被設為"mirror 12"。
前處理和后處理
mod_headers可以應用在請求被處理之前或之后。通常的模式是"后處理",也就是在請求處理完畢之后、發送應答之前設置應答頭。在實際工作的服務器上應當始終使用"后處理"模式。
"前處理"模式應當僅僅作為開發者使用的一種測試/調試輔助工具。可以在指令中使用early關鍵字啟用"前處理"模式,此時將在處理請求之前設置請求頭。這樣就可以模擬各種不同的請求以協助調試。
由于"前處理"模式的指令在將URL映射到文件系統之前就生效了,不能依賴于所請求的路徑。所以"前處理"模式的指令只能用在主服務器和虛擬主機部分的配置中,而不能用于`<Directory>`或`<Location>`配置段中。
### 示例
將所有以"TS"開頭的請求頭復制到應答頭中:
~~~
Header echo ^TS
~~~
在應答中添加一個MyHeader頭來包含服務端接受到請求的時間戳和經過多少時間以后才完成對該請求的處理并作出應答。這個頭可以讓客戶端知道瓶頸位于服務端還是位于服務端和客戶端之間的線路。
~~~
Header add MyHeader "%D %t"
~~~
上面的設置將會添加如下應答頭內容:
~~~
MyHeader: D=3775428 t=991424704447256
~~~
向Joe問好(Hello)
~~~
Header add MyHeader "Hello Joe. It took %D microseconds \
for Apache to serve this request."
~~~
上面的設置將會添加如下應答頭內容:
~~~
MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
~~~
當且僅當"MyRequestHeader"出現在請求頭中的時候才在應答中發送"MyHeader"頭。這個對根據特定的客戶端構造特定的應答頭很有用。注意,下面的例子需要mod_setenvif模塊的支持。
~~~
SetEnvIf MyRequestHeader value HAVE_MyRequestHeader
Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
~~~
如果請求中出現"MyRequestHeader: value"頭,應答中將會包含下面的頭:
~~~
MyHeader: D=3775428 t=991424704447256 mytext
~~~
### Header 指令

這個指令可以替換、合并、刪除HTTP應答頭。應答頭緊跟在內容處理器和輸出過濾器完工之后生成,這時候才能對頭進行修改。
condition選項可以是onsuccess或always 。它決定了將對哪個內部頭(internal header)表進行操作。onsuccess表示"2xx"狀態碼,always表示所有狀態碼(包含"2xx")。特別地,如果你想撤銷由某個模塊設置的頭,你應當做做試驗,以找到是那個表產生的影響。
該指令執行的動作是由第二個參數決定的。這個參數取值范圍如下:
* set 設置新的或修改已經存在的同名應答頭。value可以是一個格式字符串。
* append 向同名應答頭添加新內容而不修改原來已經存在的舊內容。當向一個已經存在的頭添加新值時,將用逗號與原來已經存在的舊值分開。這是向HTTP頭賦以多個值的標準方法。
* add 向應答中添加新的頭而不修改原來已經存在的頭(即使同名)。這將可能導致有兩個或更多的應答頭具有相同的名字,從而導致意想不到的后果,所以通常不使用這種方法而用append來代替它。
* unset 去除應答中同名的頭(若存在的話)。如果有多個頭同名,則會被全部去除。value必須被省略。
* echo 將請求中同名的頭復制到應答中。header可以是一個正則表達式。value必須被省略。
* 這個參數后面必須要跟一個header名字(結尾的冒號可要可不要)。set, append, add, unset是大小寫無關的。用于echo的header是大小寫敏感的,并且可以是一個正則表達式。
對于add, append, set來說,value是第三個參數。如果value包含空格則必須用雙引號(")括起來。value可以是一個普通字符串或包含格式說明符的字符串,value支持下列格式字符串:

>[danger] 注意
"%s"格式符僅在Apache 2.1及以后的版本中可用。它可以代替"%e"以避免"SSLOptions +StdEnvVars"帶來的額外開銷。如果因為別的原因必須開啟"SSLOptions +StdEnvVars",那么"%e"將比"%s"更加合適。
>[danger]Header后面可以跟一個用于指定生效條件的額外參數(或者用early表示"前處理")。如果在"env=..."參數中指定的環境變量存在(或用"env=!..."表示不存在),那么Header指令指定的動作將會生效,否則將不會生效。
>[danger]除非使用early模式,否則Header指令將在應答最后被發送到網絡前處理。這意味著可以設置和改寫絕大多數應答頭,除了自己添加的應答頭。
### RequestHeader 指令

這個指令可以替換、合并、刪除HTTP應答頭。請求頭將會在內容處理器運行之前被修改。修改的動作由第一個參數決定,其取值范圍如下:
* set 設置新的或修改已經存在的同名請求頭。
* append 向同名請求頭添加新內容而不修改原來已經存在的舊內容。當向一個已經存在的頭添加新值時,將用逗號與原來已經存在的舊值分開。這是向HTTP頭賦以多個值的標準方法。
* add 向請求中添加新的頭而不修改原來已經存在的頭(即使同名)。這將可能導致有兩個或更多的請求頭具有相同的名字,從而導致意想不到的后果,所以通常不使用這種方法而用append來代替它。
* unset 去除請求中同名的頭(若存在的話)。如果有多個頭同名,則會被全部去除。value必須被省略。
* 這些參數后面必須要跟一個header名(結尾的冒號可要可不要,且大小寫無關)。對于add, append, set來說,value是第三個參數。如果value包含空格則必須用雙引號(")括起來。對于unset來說則不需要value參數。value可以是一個普通字符串或包含格式說明符的字符串,格式字符串的用法與Header指令一樣。
RequestHeader后面可以跟一個用于指定生效條件的額外參數(或者用early表示"前處理")。如果在"env=..."參數中指定的環境變量存在(或用"env=!..."表示不存在),那么RequestHeader指令指定的動作將會生效,否則將不會生效。
除非使用early模式,否則RequestHeader將在請求被處理之前生效。這樣,由瀏覽器和Apache輸入過濾器產生的請求頭都可以被該指令處理。
[1]:http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
[2]:http://httpd.apache.org/docs/2.4/zh-cn/mod/mod_ratelimit.html
[3]:http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_authz_host.html
- 目錄
- 離散的內容
- IO模型
- 網卡綁定
- ssh
- 硬件測試
- 硬件
- limits
- 網絡流量
- 硬盤IO
- 硬盤
- tmux
- 主機名和域名
- http_proxy
- iptables
- 內核參數
- 塊設備和字符設備
- 內存
- 虛擬內存并非交換分區
- 網絡延時
- 概念
- 多核壓縮
- linux基礎
- SSH協議
- 軟件管理
- yum
- 制作本地源 yum系列
- 制作本地源 apt系列
- apt
- 在 Linux 中移除從源代碼安裝的程序的一種簡單的方法
- 其他
- 源碼編譯和二進制安裝后更改配置
- DNS
- bind
- 守護進程
- 特殊權限
- limit.conf配置
- 網絡
- shell-ok
- 變量ok
- 數組ok
- 系統變量和環境變量
- 運算符和計算-ok
- 條件測試-ok
- 選擇-ok
- shell循環-ok
- 輸出echo和printf-ok
- 技巧-ok
- pre-web
- http協議
- web服務器
- Apache
- apache安裝
- yum安裝
- 二進制安裝
- 編譯安裝
- httpd命令
- 運行 監控apache
- apache配置文件
- 常用配置
- MPM多處理模塊
- 編譯模塊
- apache模塊
- apache核心模塊
- apache標準模塊
- apache第三方模塊
- 虛擬主機
- 1
- CGI-FastCGI-SSI
- 別名和重定向
- apache應用
- 301重定向
- apache防盜鏈
- http轉化為https
- 訪問時間段控制
- 控制訪問目錄
- 限制指定USER_AGENT
- 不同客戶端訪問不同網頁
- apache黑名單
- httpd之禁止解析php
- 不記錄css/js/img的訪問日志
- 瀏覽器端靜態緩存
- apache訪問日志自動切割
- order-require
- 壓縮傳輸
- httpd-ssl
- apache代理
- 正向代理
- 反向代理
- apache調優
- httpd壓力測試工具ab
- CGI測試
- php
- php原理
- httpd和php的結合方式
- php yum安裝之DSO模式
- php 編譯安裝之DSO模式
- php-fpm詳解
- php yum安裝之php-fpm模式
- php 編譯安裝之FastCGI模式
- php擴展之mysql
- php擴展之gd
- php擴展之pcntl
- php擴展之xcache
- php擴展之ZendGuardLoader
- phpMyAdmin
- wordpress
- 數據庫-mysql
- 數據庫原理
- mysql數據庫原理
- mysql源碼編譯安裝
- mysql二進制包安裝
- mysql命令行工具
- 更改密碼
- 數據庫授權grant
- mysql日志
- 命令
- 常用
- 小命令大作為
- awk 報告生成器
- 網絡命令
- 命令查找
- 壓縮歸檔命令
- 文件管理
- 文件管理命令
- 文件查看命令
- 目錄管理命令
- 用戶管理命令
- 用戶權限管理
- curl
- cheat
- chrony
- command
- crontab任務計劃
- cut
- date
- dd
- df
- echo
- find
- grep
- hash
- iftop
- kill pkill killall
- ls
- lsmod和modprobe
- lsof
- man
- mkpasswd
- mount
- mtr
- netstat
- nmap
- nc
- NTP
- passwd
- rm
- rdate
- pv
- sar系統活動情況報告
- sed文本處理命令
- setup
- screen
- shutdown
- sort 命令
- sudo
- tcpdump
- top
- uniq
- wget
- who
- xargs
- 監控
- zabbix郵件報警
- Redis
- redis安裝
- redis數據類型和操作方法
- redis持久化和配置
- redis主從配置
- php連接redis
- redis實現session共享
- 安裝測試
- redis設置密碼
- ELK日志分析系統
- elasticsearch
- logstash
- logstash插件
- filebeat日志收集
- kibana
- jenkins
- jenkins安裝與配置
- 案例1
- 案例2
- 案例3
- 代碼倉庫之svn
- svn服務端配置
- 常用操作
- svn備份
- LB集群
- LVS負載均衡集群
- ipvsadm使用方法
- LVS調度方法
- NAT原理
- NAT實踐
- DR原理
- DR實踐
- TUN原理
- LVS持久連接
- HA集群
- HPC集群
- 共享存儲
- ftp協議
- vsftpd
- NFS
- 網站架構發展
- 文件同步
- rsync基本用法
- rsync安裝和使用_拉取模式
- lsyncd安裝和用法
- zabbix
- zabbix服務端安裝
- zabbix客戶端安裝
- zabbix編譯安裝
- zabbix監控tomcat
- zabbix監控mysql
- gitlab
- supervisor
- nsq
- ruby
- nodejs
- consul
- mesos
- zookeeper
- rwho
- 對象存儲
- 工具
- rclone
- minio
- linux 性能調優
- CPU
- 第一部分 CPU
- 安全