httpd2.2配置文件详解(一)

2023年 7月 15日 74.0k 0

apache一,apache MPM简介MPM:prefork:多进程模型,每个进程响应一个请求worker:多线程模型,每个线程响应一个请求event:事件驱动模型,一个线程响应多个请求并发服务器响应请求1,单进程I/O模型2,多进程I/O模型3,复用的I/O模型    多线程模型    事件驱动复用的多进程I/O模型httpd基本配置和应用httpd的官网是http.apache.org,目前早已超过系统安装树的版本,为2.2和2.4二,httpd包介绍[root@localhost ~]# yum list all httpdLoaded plugins: fastestmirror, refresh-packagekit, securityLoading mirror speeds from cached hostfile  base: ftp.sjtu.edu.cn  extras: ftp.sjtu.edu.cn  updates: ftp.sjtu.edu.cnbase                                                                                                    | 3.7 kB     00:00     extras                                                                                                  | 3.4 kB     00:00     mariadb                                                                                                 | 2.9 kB     00:00     mariadb/primary_db                                                                                      |  22 kB     00:01     updates                                                                                                 | 3.4 kB     00:00     Installed Packageshttpd.x86_64      #依赖包                                        httpd-tools.x86_64  #依赖包                                      Available Packageshttpd-devel.i686                                          httpd-devel.x86_64  #以上三个和开发相关                                       httpd-manual.noarch  #在线手册页,                                    [root@localhost ~]# httpd-tools,  压力测试等    [root@localhost ~]# rpm -ql httpd-tools/usr/bin/ab           /usr/bin/htdbm/usr/bin/htdigest/usr/bin/htpasswd/usr/bin/logresolve/usr/share/doc/httpd-tools-2.2.15/usr/share/doc/httpd-tools-2.2.15/LICENSE/usr/share/man/man1/ab.1.gz/usr/share/man/man1/htdbm.1.gz/usr/share/man/man1/htdigest.1.gz/usr/share/man/man1/htpasswd.1.gz/usr/share/man/man1/logresolve.1.gz[root@localhost ~]# 三,程序环境:rpm安装的httpd,大多数情况下http自己ID运行时,他的工作路径是/etc/httpd/配置文件:主配置文件:/etc/httpd/conf/httpd.conf分段配置文件:/etc/httpd/conf.d/*.conf服务脚本:/etc/rc.d/init.d/httpd脚本的配置文件:/etc/sysconfig/httpd,#定义httpd进程如何工作模块链接文件:/etc/httpd/modules  #映射文件。真正的路径是/usr/lib64/httpd/modules主程序文件:/usr/sbin/httpd #这里提供的是prefork文件            /usr/sbin/httpd.worker #worker            /usr/sbin/httpd.event #event这里要说明的是,httpd在2.2,mpm时是不是支持dso,需要切换不同的文件来进行切换模块,而在2.4,则使用dso动态加载即可。日志文件目录:/var/log/httpd  access_log:访问日志文件  error_log: 错误日志站点文档目录:/var/www/html如果已经安装好,则可以使用:server httpd start 启动在查看下httpd 80端口,使用:ss -tnl   查看如下所示:[root@localhost ~]# service httpd startStarting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName                                                           [  OK  ][root@localhost ~]# 当我们第一次启动时候,会报出一个警告,这是因为DNS会反解本机IP对应的主机名是否解析,如果反解除的结果和我们的主机名不一致,但是我们没有DNS,所以他无法确定,使用当前的主机名!这个信息可以安全忽略/var/log/httpd/error_log中的日志,不一定全是错误信息,有安装信息等,关闭启动信息等等我们可以在浏览器输入ip地址讲会看到欢迎页面,这个页面是rpm安装的自带的。而这个欢迎页面在/etc/httpd/conf.d/welcome.conf当成功访问,日志里面将会有记录[root@localhost html]# tail /var/log/httpd/access_log 192.168.233.1 - - [30/Oct/2015:06:00:56 -0700] "GET / HTTP/1.1" 403 4961 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36"192.168.233.1 - - [30/Oct/2015:06:00:56 -0700] "GET /icons/apache_pb.gif HTTP/1.1" 200 2326 "http://192.168.233.138/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36"192.168.233.1 - - [30/Oct/2015:06:00:56 -0700] "GET /icons/poweredby.png HTTP/1.1" 200 3956 "http://192.168.233.138/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36"192.168.233.1 - - [30/Oct/2015:06:00:56 -0700] "GET /favicon.ico HTTP/1.1" 404 290 "http://192.168.233.138/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36"[root@localhost html]# 四,配置文件:Directive #指令   Value  #值整个配置文件分成三个段[root@localhost html]# grep "Section" /etc/httpd/conf/httpd.conf### Section 1: Global Environment #全局环境配置,对所有内容生效,虚拟主机         ### Section 2: 'Main' server configuration  #主服务器配置,核心配置 ### Section 3: Virtual Hosts #虚拟主机配置[root@localhost html]# Main和Virtual是不能同时启用的,要使用Main则需要忽视Virtual,使用Virtual则需要注释Main,也就是说主配置和虚拟主机是不能同时启用在编辑配置文件之前备份[root@localhost conf]# cp httpd.conf{,.bak}1,指定监听端口Listen 80 ,一般情况下当我们输入IP地址是监听所有可用IP地址的,使用IP:prot(1),Listen指令可出现多次,用于指明多个不同的套接字,如下所示Listen 127.0.0.1:80Listen 127.0.0.1:8080如果你修改了端口,则需要进行重启操作,service httpd restart,重启后使用IP:8080进行访问2,持久链接相关当我们打开一个也没可能会应用数十个甚至上百个其他资源,每一个资源获取,如下:当我们打开页面是,输入域名1,DNS解析2,和IP建立tcp三次握手链接3,传输资源4,拆除链接如下所示:非持久链接:每个资源都是单独通过专用的链接进行获取持久链接:链接建立后,每个资源获取结束不会断开链接,而持续等待其他资源请求并完成传输我们将上图第四段去掉,处于持久链接状态,当有别的请求在进来时,仍然处于等待状态,当时我们需要考虑一个问题,如何断开?何时断开?1,数量限制:如100,超过则断开2,时间限制:如60秒,超过则断开劣势:对并发访问量较大的服务器,开启持久链接会对有些请求得不到服务改进:减短持久链接时间:httpd-2.4支持毫秒级别非持久链接对非常繁忙的场景中,他可以对每个排队的请求都能得到请求,尽管他可能浪费了大量带宽开启持久链接:KeeAlive Off|On开启断开的限制如下:最大保活请求资源数:MaxKeepAliveRequests 100 如果没有达到100个则这条生效:KeepAliveTimeout 15以上两条那个先到达,则断开3,MPM多路处理模块:并发请求响应的不同实现prefork ,worker,eventhttpd-2.2不支持同时编译多个不同的MPM,rpm安装的httpd-2.2提供了三个不同的那如何确定用的是哪个模块呢(1),查看httpd[root@localhost ~]# vim /etc/sysconfig/httpd下面这项:这项没有启用#HTTPD=/usr/sbin/httpd.worker默认为:/usr/sbin/httpd.其为prefork(2),ps aux |grep httpd(3),查看最主要的模块[root@localhost ~]# httpd -lCompiled in modules:  core.c  prefork.c  http_core.c  mod_so.c[root@localhost ~]# httpd -l查看静态编译模块httpd -M可以查看所有模块,包括静态和DSO模块httpd.worker -l,还有event -l[root@localhost ~]# httpd.worker -lCompiled in modules:  core.c  worker.c  http_core.c  mod_so.c[root@localhost ~]# 五,更换支持不同的MPM的主程序1,编辑/etc/sysconfig/httpd[root@localhost ~]# vim /etc/sysconfig/httpdHTTPD=/usr/sbin/httpd.worker注意,这里可以修改成httpd.worker或者httpd.event,修改后需要重启生效2,重启service httpd restart3.在查看[root@localhost ~]# ps aux |grep httpdroot       3809  0.0  0.4 184532  4072 ?        Ss   07:20   0:00 /usr/sbin/httpd.workerapache     3812  0.0  0.5 528792  5392 ?        Sl   07:20   0:00 /usr/sbin/httpd.workerapache     3813  0.0  0.5 594328  5412 ?        Sl   07:20   0:00 /usr/sbin/httpd.workerapache     3814  0.0  0.5 594328  5396 ?        Sl   07:20   0:00 /usr/sbin/httpd.workerroot       3925  0.0  0.0 103252   836 pts/0    S+   07:20   0:00 grep httpd[root@localhost ~]# 当你更换不同的模块时,调用的配置各不相同配置文件在:/etc/httpd/conf/httpd.conf注意:在httpd2.2中event是测试专用的,所以,配置文件重只有prefork和worker两个容器<IfModule prefork.c>StartServers       8 #默认服务启动会启动8个空闲进程    MinSpareServers    5 #最少5个空闲进程  MaxSpareServers   20 #最大空闲进程数ServerLimit      256 #最多仅允许多少个进程来响应请求MaxClients       256 #最大客户端并发请求连接数MaxRequestsPerChild  4000 #每个子进程最多响应多少个请求</IfModule><IfModule worker.c>StartServers         4      #默认启动多少个空闲进程MaxClients         300 #最大并发连接数MinSpareThreads     25      #最少空闲线程数MaxSpareThreads     75      #最大空闲线程数ThreadsPerChild     25      #每个子进程可生产多少个线程MaxRequestsPerChild  0      #每个进程响应的链接无限制</IfModule>当我们第一次启动是会杀掉一个进程六,DSO机制httpd是高速模块化的,配置指令模块加载如下:在/etc/httpd/conf/httpd.conf中有很多LoadModuls,这些模块是存放在/etc/httpd/modules中,而/etc/httpd/modules是链接至/usr/lib64/httpd/modules/下,这些模块如果不想用只需要注释,添加模块只需要添加进去即可,可以使用httpd -M查看添加或者注释是否生效,如果进程生效,则需要reload,这里的模块可使用相对路径,相对于serverRoot指令指向的位置即可注意:建议使用service httpd reload重新装载配置文件5,指定主服务器的文档映射路径 "Main server"DocumentRoot指令这里的修改只需要修改DocumentRoot路径即可DocumentRoot "/var/www/html"  #就是这项,改到页面位置即可,这个位置必须存在文档路径映射:DocumentRoot指向的路径为URL起始的位置/var/www/html/images/1.jpghttp://server/images/1.jpg6,站点路径访问控制站点访问控制机制:(1),基于来源地址(2), 基于账号定义的方式有两种:(1),文件系统路径文件系统路径通常使用 <Directory "/PAHT/TO/SOMEDIR">...</Directory>2,URL路径<Location "/URL">  ...  </Location>七,Directory中定义访问控制 (1)OptionsIndexes:当访问的路径下无默认主页面文件存在,且没有指定具体要访问的资源时,会将此路径下的所以资源以列表呈现给用户;非常危险,不建议使用;FollowSymLinks:如果其页面文件是为指向DocumentRoot之外路径上的其他文件时,将直接显示目标文件的内容    None:什么特性都不启用     All:所以的都启用 (2)AllowOverride  这项一般不启用,启用可能占用相当多的服务器性能 (3)基于来源地址的访问控制    Order:检查次序        Order Allow Deny:只有明确Allow的来源地址,才允许访问,其他的均为Deny        Order Deny Allow:只有明确Deny    Allow from:允许访问的来源地址    Deny from:拒绝访问的来源地址  如:    Order Allow Deny    Deny from 10.0.0.2/16    Allow from 10.0.0.1/16      允许10.0.0.1来访问,拒绝10.0.0.2,明确Deny为Deny,明确Allow为Allow    这里的from支持网络格式,如:    10.0    10.0.0.0     10.0.0.0/16      都是一个意思

相关文章

LeaferJS 1.0 重磅发布:强悍的前端 Canvas 渲染引擎
10分钟搞定支持通配符的永久有效免费HTTPS证书
300 多个 Microsoft Excel 快捷方式
一步步配置基于kubeadmin的kubevip高可用
istio全链路传递cookie和header灰度
REST Web 服务版本控制

发布评论