1.HTTP状态码:
1xx: 信息性状态码 2xx:成功状态码 200OK 201CREATED 3xx:301 永久重定向 302 临时重定向,会在响应报文中使用location:新位置 4xx:客户端类错误 403 请求被拒绝 404 页面不存在 405 使用的方法不被允许 5xx:服务器类错误 500:服务器类错误 502:服务器网管错误 503:服务暂时不可用
2.HTTP MPM三种模式:
prefork 中没有线程的概念,是多进程模型,一个进程处理一个连接;稳定;响应快。其缺点是在连接数比较大时就非常消耗内存。 worker 是多进程多线程模型,一个进程有多个线程,每个线程处理一个连接。与prefork相比,worker模式更节省系统的内存资源。不过,需要注意worker模式下的Apache与php等程序模块的兼容性。 event 是worker模式的变种,它把服务进程从连接中分离出来,在开启KeepAlive场合下相对worker模式能够承受的了更高的并发负载。event模式不能很好的支持https的访问(HTTP认证相关的问题)
3.HTTPD基础配置文件:
# grep "Section"/etc/httpd/conf/httpd.conf 全局配置段 ### Section 1: Global Environment 主服务器的配置段 ### Section 2: ‘Main‘ server configuration 虚拟主机配置段,通常不会和主服务器一起使用 ### Section 3: Virtual Hosts 持久连接 KeepAliveOff:使用持久连接{On|Off} MaxKeepAliveRequests100:使用持久连接最大的连接数 KeepAliveTimeout15:使用持久连接的超时时间 MPM模块 <IfModule prefork.c> StartServers 8 #启动8个空闲进程 MinSpareServers 5 #最少空闲进程5个 MaxSpareServers 20 #最大空闲进程20个,不能小于空闲进程 ServerLimit 256 #对于MaxClient 最大启动的server MaxClients 256 #同时允许处理多少个客户请求256 MaxRequestsPerChild 4000 #每个子进程最多允许处理4000个请求 </IfModule> <IfModule worker.c> StartServers 4 #启用多少个进程 MaxClients 300 #最大并发的请求 MinSpareThreads 25 #最小空闲进程25个 MaxSpareThreads 75 #最多空闲进程75个 ThreadsPerChild 25 #每个进程最多25个线程 MaxRequestsPerChild 0 #不限定每个线程处理多少个请求 </IfModule> 监听端口 Listen80 指定要装载的模块:DSO LoadModuleauth_basic_module modules/mod_auth_basic.so …… #httpd -D DUMP_MODULES : 查看装载了哪些模块 2.)主服务器的配置段 ### Section 2: ‘Main‘ server configuration ServerAdmin root@localhost : 主机名 ServerNamewww.explm.com:80 网站根目录 DocumentRoot“/var/www/html” 于Directory中可做的访问控制 OptionsIndexes FollowSymLinks 如果目录下面没有主页,会把目录下的所有文件以列表方式列出,并可以i提供下载 -Indexes 跟踪符号连接 -FollowSymLinks 支持在每个页面下创建.htacces用户实现对比此目录中资源访问时的访问控制功能 AllowOverrideNone 日志功能: ErrorLog"/path/to/error_log" LogLevel{debug|info|notice|warn|error|crit|alert|emerg} LogFormat CustomLog"/path/to/access_log" LogFormat_Name CustomLoglogs/access_log combined %h:客户端地址 %l:远程登录名,通常为- %u:认证时输入用户名,没有认证时为- %t:服务器收到 用户请求时的时间 %r:请求报名的起始行 %>s:响应状态码 %b:响应报文的长度,单位是字节 %{HEADER_NAME}i:记录指定首部对应的值
4.CGI脚本:
CGI脚本路径别名,默认在/var/www/cgi-bin/ CGI如何工作:使服务器提供动态页面,用户的请求先到达系统内核的工作区,由内核交由本地监听在WEB服务上的服务程序,WEB服务器的服务理解用户请求的是一种特殊脚本的请求,WEB服务器服务不会直接相应客户。而是通过用户请求的资源响应给CGI协议,交给CGI的程序解释器,解释器会到磁盘上载入所请求的脚本后,在本地执行。并且将直接结果返回给WEB服务器。 ScriptAlias/cgi-bin/ "/var/www/cgi-bin/" :通知WEB服务器/var/www/cgi-bin/目录下可以存放CGI脚本 var/www/cgi-bin #!/bin/bash cat << EOF Content-Type: text/html <pre> <meta http-equiv="refresh"content="3";url="172.16.32.10/cgi-bin/test.sh" /> #动态刷新页面,3秒刷新一次 <h1> The host time is: $(date +%T)</h1> <h2>The system load is: $(sar 1 1)</h1> </pre> EOF # chmod +x test.sh
5.基于用户做访问控制:
如果想要给虚拟主机做访问控制,只需要写入要控制的路径就好 用户认证:基本认证,明文发送 Basic 摘要认证,加密后发送的 digest 使用虚拟用户,不是用户登录系统的帐号,仅用户访问某服务,或者获取某资源的认证 可以存放的位置:文本文件(密码是MD5).httppasswd,数据库,(dbm基于文本文件的数据库引擎,比文本的速递要快,API方式输出),ldap,轻量级访问协议 authenticationprovider: 帐号和密码的存储机制,简称authn authorizationprovider:用户访问的路径 httpd中简称:authn 基于文件做访问控制: <Directory "/var/www/cgi-bin"> Optionsnone #用户访问时无任何选项 AllowOverride AuthConfig #做认证相关的配置 AuthTypeBasic #指明认证类型 AuthName"system dmz!" #提示信息 # AuthBasicProvider file AuthUserFile "/etc/httpd/conf/.htpasswd" #指定认证文件存放位置 # Requireadmin Requirevalid-user #允许哪些用户登录 valid-user:所有合法的帐号 </Directory> 创建htpasswd认证文件 Htpasswd命令: 选项: -c: 如果事先不存在,则创建,只能在第一次文件本月的时候使用 -m:使用md5方式存储密码 # htpasswd -c -m /etc/httpd/conf/.htpasswd admin New password: Re-type new password: Adding password for user admin # cat /etc/httpd/conf/.htpasswd admin:$apr1$BdPIYoGU$rklSzXdEDz3JVFKpawJ8G1
测试下:
输入正确的密码后,就可以登录了
6.虚拟主机:
#DocumentRoot "/var/www/html" <VirtualHost 172.16.32.10:80> ServerName www.zhang.com DocumentRoot "/var/www/web1" </VirtualHost>
7.httpd内嵌处理器handler,输出status状态信息:
用到的hendler:server-status 启用handler使用SetHandler指令 handler:当文件被调图时,在apache内部的表示形式,一般文件类型都是隐式处理器 # vim /etc/httpd/conf/httpd.conf <Location /server-status> SetHandler server-status # Orderdeny,allow Orderallow,deny # Denyfrom all # Allowfrom .example.com Allowfrom 172.16.0.0/16 </Location> # httpd -t Syntax OK # service httpd reload Reloading httpd:
本文出自 “你对谁都微笑” 博客,请务必保留此出处http://54276311.blog.51cto.com/9130197/1540138
原文地址:http://54276311.blog.51cto.com/9130197/1540138