1、httpd.conf配置文件
★设置默认字符集
AddDefaultCharset
★CGI脚本路径
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"指定cgi路径别名
bash写CGI脚本:
所有文本都使用命令输出:echo, printf, cat 具体格式如下:
Content-Type: text/html 头一行后一定要空一行否则报错
<pre>
</pre>
FastCGI: 协议
★基于用户访问控制
用户认证功能:基本认证(basic)、摘要认证(digest)
虚拟用户:仅用于访问某服务或获取某资源的凭证,用于保存用户信息有以下几种方式:
文本文件:.htpasswd
SQL数据库
dbm: 数据库引擎,提供API
ldap:
★虚拟主机
虚拟主机不同的访问机制:基于端口、基于IP、基于主机名(它是通过http首部来判别请求的不同主机)
使用虚拟的前提:取消主服务器
注释主服务器的站点根路径指定:DocumentRoot
如果基于端口做虚拟主机需用listen监听多个端口
定义虚拟主机
NameVirtualHost IP:PORT。开启名称虚拟主机,2.2版本上有该选项2.4没有*表示所有ip
<VirtualHost IP:PORT>定义每个虚拟主机的属性,在主服务器上设置的都可以在这里单独设置
ServerName
DocumentRoot
ServerAlias
ErrorLog
CustomLog
</VirtualHost>
配置示例:
<VirtualHost 192.168.18.7:80>
ServerName www.mageedu.com
DocumentRoot "/web/hosta"
</VirtualHost>
<VirtualHost 192.168.18.8:8080>
ServerName www.mageedu.com
DocumentRoot "/web/hostc"
</VirtualHost>
配置文件语法检查:httpd -t
2、 ★https协议
ssl(安全的套接字层), tls(传输层安全)
ssl会话基于IP地址创建,所以,每一个IP仅创建一个SSL会话;
httpd: ssl模块:mod_ssl
http协议:文本编码
https协议: 基于SSL二进制编码, 443/tcp
ssl握手要完成的工作:
交换协议版本号
选择双方都支持的加密方式
客户端对服务器端实现身份验正
密钥交换
配置httpd工作于https
安装mod_ssl模块
安装后rpm -ql mod_ssl查看生成的配置文件
为服务端生成私钥,并为其提供证书:
mkdir /etc/httpd/ssl && cd /etc/httpd/ssl
(umask 077; openssl genrsa -out httpd.key 1024)
openssl req -new -key httpd.key -out httpd.csr
签署后的证书为:/etc/httpd/ssl/httpd.crt
配置使用https的虚拟主机
SSLCertificateFile:设定证书路径
SSLCertificateKeyFile :设定私钥路径
<VirtualHost IP:443>
DocumentRoot
ServerName
</VirtualHost>
重新装载配置
测试:
openssl s_client -connect IP:PORT -CAfile /path/to/ca_certificate
★status页面
httpd内嵌有handler,其中有一个handler用于输出当前httpd服务相关状态信息
handler: server-status
启用handler要使用SetHandler指令
handler: 当文件被调用时,apache内部表示形式;一般每种文件类型都有其隐式处理器
修改配置文件中该选项:启动handler页面
<Location /server-status>
<Location /server-status>
Order allow,deny
Allow from 192.168.146.0/24
</Location>
★访问属性配置总结
配置文件系统访问路径:
<Directory [~] "">
</Directory>
<File [~] "">
</File>
配置URL访问路径:
<Location [~] "">
</Location>
★curl命令
curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。
curl的常用选项:
-A/--user-agent <string> 设置用户代理发送给服务器
-basic 使用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
★使用mod_deflate模块压缩页面优化传输速度
SetOutputFilter DEFLATE
mod_deflate configuration
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
# 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
3、httpd程序包自带的工具介绍
httpd:apache服务程序
-t:测试配置文件语法
-l: 显示静态模块
-D DUMP_MODULES:列出DSO模块
-M:相当于-t -D测试并显示DSO模块
-D:显示所有虚拟主机信息
htpasswd:
为基于文件的basic认证创建和更新用户认证文件
apachectl:
脚本,httpd服务控制工具可以启动和关闭服务;
ab:
apache benchmark:httpd的基准性能测试工具;
apxs:
httpd得以扩展使用第三方模块的工具;
htcacheclean:
磁盘缓存清理工具;
htdigest:
为digest认证创建和更新用户认证文件
httxt2dbm:
为rewrite map创建dbm格式的文件
rotatelogs:
不关闭httpd程序而切换其日志文件的工具,根据用户设定切割日志
suexec:
当httpd进程需要以另外的用户的身份去访问某些资源时,可以以suexec作临时切换;
★ab工具的基本使用(可以模拟真实生产环节压力测试的工具tcpcopy)
-c:模拟并发数
-n:模拟总的请求数,指并发数请求总的个数,例如:10并发请求20次这里就需要指明200,-c 10 -n 200
★资源限定:内核限定每个普通用户只能打开1024个文件,ulimit -n可以查看当前用户可以打开文件最大数
软限定:可以临时超出设定时长限制设定
硬限定:绝对不可超出的限定
管理员可使用ulimit命令临时性地修改各种资源的软限制;
ulimit -n #:能同时打开的文件数
-u #:能同时启动的进程数
配置文件:
/etc/security/limits.conf
/etc/security/limits.d/*.conf
★编译安装httpd-2.4
httpd程序依赖于apr和apr-util
apr: apache portable runtime(httpd2.4依赖于1.4以上的apr和apr-util,安装前请查看机器上的apr)
更新apr包:
解压:tar xf apr-1.5.2.tar.gz
cd apr-1.5.2:进入apr目录
./configure --help:查看安装路径
./configure --prefix=/usr/local/apr:指定目录安装
make && make install:编译安装
解压:tar xf apr-util-1.5.4.tar.gz
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/:apr-util是apr的工具所以需要指明为哪个apr进行工作,--with-apr指明为哪个apr工作
make && make install:编译安装
httpd-2.4的新特性:
1)MPM支持在运行时装载;
--enable-mpms-shared=all --with-mpm={prefork|worker|event}
2)支持event mpm
3)异步读写
4)在每模块及每目录分别使用不同的日志级别
5)每请求的配置;<If>,<Elseif>
6)增强版的表达式分析器
7)毫秒级的keep alive的timeout
8)基于FQDN的虚拟主机不再需要NameVirtualHost指令;
9)支持用户使用自定义变量
新增了一些模块:
mod_proxy_fcgi:支持用fcgi协议方式连接后端php服务,
mode_ratelimit:限定用户访问时传输速率,
mod_request:对用户请求做更强大过滤,
mod_remoteip:可以对客户端请求的IP地址做控制
修改了一些配置机制:不再支持使用order, allow, deny定义基于ip的访问控制;改为require
./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-mpms-shared=all --with-mpm=event --enable-modules=most
--sysconfdir:指定配置文件路径
--enable-so:支持DSO动态装卸模块
--enable-ssl:编译启用ssl模块,但是这项依赖于openssl,rpm -qa |grep open
--enable-cgi:启用cgi
--enable-rewrite:url重写,但是它依赖于pcre(perl正则表达式分析器)
--with-zlib:数据报文发送时的压缩库
--with-pcre:如果指明要使用prcr就需要把相关的pcre-devel先安装好
--with-apr=/usr/local/apr:指定apr路径。
--with-apr-util=/usr/local/apr-util/
--enable-mpms-shared=all --with-mpm=event
--enable-modules={all,most}:编译所有模块或者常用模块,编译好可以不用。
编译安装后如需修改主程序参数,在配置文件目录下extra/httpd-mpm.conf,如需切换主程序注释当前主程序,添加相应主程序
编译安装后虚拟主机配置文件在配置文件目录下extra/httpd-vhosts.conf,先注释中心主机后开启Virtual hosts,每个虚拟主机访问目录都需要指明可访问权限
基于IP做访问控制:
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all deny
控制某特定主机的访问:
Require ip IPADDR
Require not ip IPADDR