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

image.png

worker,多线程

image.png

event

image.png

 

三、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

image.png

该选项只是让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工作模式:

image.png

此项修改在/etc/sysconfig/httpd

image.png

centos7工作模式/etc/sysconfig/httpd已无这些内容,修改某模式选项参数时直接在自建的/etc/httpd/conf.d/*.conf里写入即可,比如说

image.png

2、配置格式:directive value

directive: 不区分字符大小写

value: 为路径时,是否区分大小写,取决于文件系统

3、隐藏http报文头部显示的服务器版本号:

image.png

因此新建/etc/httpd/conf.d/test.conf,写入ServerTokens Prod,保存退出后重新加载生效

image.png

或者curl命令,也可以查看

image.png

4、实验:

修改监听端口为8080

image.png

修改服务器名

image.png

修改/etc/hosts文件,添加

image.png

重启后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端口登录

image.png

此实验仅适用于本主机,如果修改了其他主机hosts文件,也可以通过apache域名解析为ip

5、工作模式更改

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

image.png

6、增删模块

httpd -M检查动态加载的模块

httpd -l 查看静态加载的模块,无法删除,必有

模块目录:/etc/httpd/conf.modules.d/00-base.conf,修改后需要重启httpd服务

image.png

7、更改主页面存放路径

apache默认路径:/var/www/html/index.html

修改:

image.png

这是主文件配置,一般不建议修改主文件配置,建议在/etc/httpd/conf.d/目录下自己新建个*.conf文件,在里面写入内容进行修改。修改前可以输入grev -v "^[ ]*#" /etc/httpd/conf/httpd.conf,将过滤掉带注释行的说明内容,像这样

image.png

如果再修改哪一项将该项拷贝出,复制到/etc/httpd/conf.d/*.conf进行修改重启即可

综上所述,找到配置文件中的/var/www/html,复制到自建的配置文件

image.pngimage.pngimage.pngimage.png

8、定义默认查找的html文件

配置文件中显示

image.png

自建目录下添加

image.png

9、站点访问控制

访问机制控制有两种:客户端来源地址、用户账号

2.4配置

image.png

10、主页面配置

/etc/httpd/conf.d/welcome.html:这是httpd找不到主页时显示的Test123页面,将它改名后,页面为

image.png

修改配置使主页面不存在时可以查看网站下的目录索引:(设置权限的目录只出现在允许的主机上

image.png

一般网站不开启此选项,不过类似阿里云的epel源网站会开启这选项

输入此项,软链接也一并显示

image.png

11、AllowOverride

与访问控制相关的哪些指令可以放在指定目录下的.htaccess文件中,覆盖之前的配置指令

用法:

image.png

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”的值;即发出请求的应用程

image.png

修改日志格式:

查找到位置

image.png

复制进自建的配置文件,并修改

image.png

13、设定默认字符集

AddDefaultCharsetUTF-8 此为默认值,自建的配置文件直接添加此项

14、定义路径别名

image.png

开启options indexes功能后测试

image.png

15、基于用户的访问控制

认证方式:basic铭文验证、digest摘要验证

(1)添加配置信息

image.png

如果只需要某个.htpasswd中某个用户访问,在require后写该用户名字即可,其他用户将无法访问

(2)在/data/下创建.htpasswd

htpasswd -c /data/.htpasswd audi,第一次创建必须加-c

htpasswd /data/.htpasswd bmw,后续创建不能加-c,否则会覆盖

htpasswd /data/.htpasswd cadillac

image.png

(3)重启服务验证

image.png

附:htpasswd其它选项

htpasswd /DIR/.htpasswd USER

-c 自动创建文件,仅应该在文件不存在时使用

-p 明文密码

-d CRYPT格式加密,默认

-m md5格式加密

-s  sha格式加密

-D 删除指定用户

16、基于组账号进行认证

    (1)自建的配置文件写入

image.png

    (2)建立用户文件和组文件

image.png

    组的建立并分配用户

image.png

    (3)测试g1组

image.png

    登录成功

image.png

    测试g2组

image.png

无效提示重新登录

image.png

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

<IfModulemod_userdir.c> ---->此项取消注释

#UserDirdisabled   ---->此项添加注释

UserDir public_html   ---->指定共享目录的名称

</IfModule>

(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模块

image.png

Require处依然可以填写只允许哪个ip查看状态

写好后浏览器地址栏输入192.168.239.70/status

image.png

21、https重定向

(1)/etc/httpd/conf.d/ssl.conf中对应的私钥证书等文件已经准备好

(2)更改/etc/httpd/conf.d/*.conf中

clipboard.png