HTTPD常用配置
---------------------------------------------------------------------------------------------------------------------------------------------
一、http服务器
1、http服务器程序
httpdapache
nginx
lighttpd
2、20世纪90年代初,美国国家超级计算机应用中心NCSA开发
1995年开源社区发布apache(a patchy server)
ASF: apache software foundation
FSF:Free Software Foundation
3、特性:
高度模块化:core + modules
DSO: Dynamic Shared Object 动态加/卸载
MPM:multi-processing module多路处理模块
二、MPM工作模式
1、prefork:多进程I/O模型,每个进程响应一个请求,默认模型,并发连接数达到10000,性能将明显下降
一个主进程:生成和回收n个子进程,创建套接字,不响应请求
多个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024个
2、worker:复用的多进程I/O模型,多进程多线程,IIS使用此模型,如果一个子进程的某个线程有问题,那么该子进程的其它线程会被问题线程影响
一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n
3、event:事件驱动模型(worker模型的变种)
一个主进程:生成m个子进程,每个进程直接响应n个请求,并发响应请求:m*n,有专门的线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力
4、模型
prefork
worker,多线程
event
三、httpd功能
1、虚拟主机:一个物理服务器搭建多个网站
IP、Port、FQDN
2、CGI:Common Gateway Interface,通用网关接口
3、反向代理:调度器,离服务器更近,根据实际情况把用户请求调度到真正提供后台服务的服务器
附:不支持正向代理。正向代理:帮助客户端访问远程主机,离客户机更近,主机想要访问某视频网站观看视频,区域内服务器收到用户机请求后去目标网站访问视频,并存储到缓存内,将缓存内的视频返回给用户,如果有其他用户也查看同样的网站视频,访问到的数据也将是区域内服务器的缓存,这样不仅节约了带宽,同时也提高了用户网络传输速度
4、负载均衡
5、路径别名
6、丰富的用户认证机制
basic
digest
7、支持第三方模块
四、httpd配置文件
1、配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
2、检查配置语法:
httpd -t
service httpdconfigtest
3、搜索ServerName
该选项只是让apache知道自己的域名叫这个,让其他远程主机知道该域名还是需要DNS,此处搞个小
4、主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.worker
/usr/sbin/httpd.event
5、主进程文件:
/etc/httpd/run/httpd.pid
6、日志文件目录:
/var/log/httpd
access_log: 访问日志
error_log:错误日志
7、帮助文档包:
httpd-manual,yum install httpd-manual后加载服务,浏览器地址输入192.168.239.60/manual出现帮助说明
五、httpd常见配置
1、centos6工作模式:
此项修改在/etc/sysconfig/httpd
centos7工作模式/etc/sysconfig/httpd已无这些内容,修改某模式选项参数时直接在自建的/etc/httpd/conf.d/*.conf里写入即可,比如说
2、配置格式:directive value
directive: 不区分字符大小写
value: 为路径时,是否区分大小写,取决于文件系统
3、隐藏http报文头部显示的服务器版本号:
因此新建/etc/httpd/conf.d/test.conf,写入ServerTokens Prod,保存退出后重新加载生效
或者curl命令,也可以查看
4、实验:
修改监听端口为8080
修改服务器名
修改/etc/hosts文件,添加
重启后httpd监听了8080端口,此时自己主机测试
注:如果在/etc/httpd/conf.d/*.conf添加listen 8080,而不修改主配置文件,此时服务重启httpd将监听80端口和8080端口;
如果在主配置文件监听的是内部ip,listen 192.168.1.1:80,意味着ip绑定端口,只能ping 通192.168.1.1的内部ip登录,外部其它ip无法通过80端口登录
此实验仅适用于本主机,如果修改了其他主机hosts文件,也可以通过apache域名解析为ip
5、工作模式更改
/etc/httpd/conf.modules.d/00-mpm.conf
6、增删模块
httpd -M检查动态加载的模块
httpd -l 查看静态加载的模块,无法删除,必有
模块目录:/etc/httpd/conf.modules.d/00-base.conf,修改后需要重启httpd服务
7、更改主页面存放路径
apache默认路径:/var/www/html/index.html
修改:
这是主文件配置,一般不建议修改主文件配置,建议在/etc/httpd/conf.d/目录下自己新建个*.conf文件,在里面写入内容进行修改。修改前可以输入grev -v "^[ ]*#" /etc/httpd/conf/httpd.conf,将过滤掉带注释行的说明内容,像这样
如果再修改哪一项将该项拷贝出,复制到/etc/httpd/conf.d/*.conf进行修改重启即可
综上所述,找到配置文件中的/var/www/html,复制到自建的配置文件
8、定义默认查找的html文件
配置文件中显示
自建目录下添加
9、站点访问控制
访问机制控制有两种:客户端来源地址、用户账号
2.4配置
10、主页面配置
/etc/httpd/conf.d/welcome.html:这是httpd找不到主页时显示的Test123页面,将它改名后,页面为
修改配置使主页面不存在时可以查看网站下的目录索引:(设置权限的目录只出现在允许的主机上)
一般网站不开启此选项,不过类似阿里云的epel源网站会开启这选项
输入此项,软链接也一并显示
11、AllowOverride
与访问控制相关的哪些指令可以放在指定目录下的.htaccess文件中,覆盖之前的配置指令
用法:
12、日志设定
直接访问/var/log/httpd
日志类型:访问日志、错误日志
(1)错误日志:
ErrorLoglogs/error_log
LogLevelwarn
LogLevel可选值:
debug, info, notice, warn,error, crit, alert, emerg,crit, alert, emerg
(2)访问日志
定义日志格式:LogFormatformat strings
LogFormat"%h %l %u %{%Y-%m-%d %H:%M:%S}t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" testlog
使用日志格式:
CustomLoglogs/access_logtestlog
参考帮助:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
%h 客户端IP地址
%l 远程用户,启用mod_ident才有效,通常为减号“-”
%u 验证(basic,digest)远程用户,非登录访问时,为一个减号“-”
%t 服务器收到请求时的时间
%r First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本
%>s 响应状态码
%b 响应报文的大小,单位是字节;不包括响应报文http首部
%{Referer}i请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的
%{User-Agent}i请求报文中首部“User-Agent”的值;即发出请求的应用程
修改日志格式:
查找到位置
复制进自建的配置文件,并修改
13、设定默认字符集
AddDefaultCharsetUTF-8 此为默认值,自建的配置文件直接添加此项
14、定义路径别名
开启options indexes功能后测试
15、基于用户的访问控制
认证方式:basic铭文验证、digest摘要验证
(1)添加配置信息
如果只需要某个.htpasswd中某个用户访问,在require后写该用户名字即可,其他用户将无法访问
(2)在/data/下创建.htpasswd
htpasswd -c /data/.htpasswd audi,第一次创建必须加-c
htpasswd /data/.htpasswd bmw,后续创建不能加-c,否则会覆盖
htpasswd /data/.htpasswd cadillac
(3)重启服务验证
附:htpasswd其它选项
htpasswd /DIR/.htpasswd USER
-c 自动创建文件,仅应该在文件不存在时使用
-p 明文密码
-d CRYPT格式加密,默认
-m md5格式加密
-s sha格式加密
-D 删除指定用户
16、基于组账号进行认证
(1)自建的配置文件写入
(2)建立用户文件和组文件
组的建立并分配用户
(3)测试g1组
登录成功
测试g2组
无效提示重新登录
17、远程客户端和用户验证的控制
Satisfy ALL|Any
ALL 客户机IP和用户验证都需要通过才可以
Any客户机IP和用户验证,有一个满足即可
示例
Require valid-user
Order allow,deny
Allow from 192.168.1
Satisfy Any
18、实现用户家目录的http共享
基于模块mod_userdir.so实现
(1)vim /etc/httpd/conf/httpd.conf
#UserDirdisabled ---->此项添加注释
UserDir public_html ---->指定共享目录的名称
(2)准备目录
su -chenux;mkdir ~/public_html ---->与上面的UserDir后面的目录对应
setfacl -m u:apache:x ~chenux
19、ServerSignatureOn | Off | EMail(默认是off)
当客户请求的网页并不存在时,服务器将产生错误文档,缺省情况下由于打开了ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版本等信息
如果不对外显示这些信息,就可以将这个参数设置为Off
设置为Email,将显示ServerAdmin的Email提示
20、status页面,显示状态信息
基于LoadModulestatus_modulemodules/mod_status.so模块
Require处依然可以填写只允许哪个ip查看状态
写好后浏览器地址栏输入192.168.239.70/status
21、https重定向
(1)/etc/httpd/conf.d/ssl.conf中对应的私钥证书等文件已经准备好
(2)更改/etc/httpd/conf.d/*.conf中