HTTPD服务器的配置文件解释

  • MPM
  • 表示多道处理模块,用于定义当多个用户同时访问,Web服务器应该如何进行响应,

  • 首先来看看HTTPD服务的主配置文件的几个段
    这里写图片描述

  • Global Environment:全局环境配置,也就是这里面定义的所有的选项具有全局属性
  • Global Environment: 表示主服务配置段,
  • Virtual Hosts:虚拟主机段,Global EnvironmentVirtual Hosts不能够同时启用;
  • 对于这个配置文件里面,# [注意空格]开头的表示都是注释,#表示的是指令
  • 指令的含义:

  • ServerTokens OS:表示输出操作系统信息,尽量不显示这里的信息;

  • ServerRoot "/etc/httpd":HTTPD的工作主目录,强烈建议不要更改;
  • PidFile run/httpd.pid:进程运行时PID号码;
  • Timeout 60:TCP三次第一次握手之后,等待用户发起第二次请求的时间;
  • KeepAlive Off:表示是否使用长连接启用,尽量避免三次握手;
  • MaxKeepAliveRequests 100:长连接最多使用的请求数量;
  • KeepAliveTimeout 15:表示长连接超时时间;
  • prefork MPM:表示多道处理模块,用于定义多个用户发起请求时,Web服务器应该如何进行响应的工作模型;
  • 关于模块的信息
<IfModule prefork.c>
StartServers       8    //服务器启动需要多少个空闲进程;
MinSpareServers    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>
  • 查看编译支持的模块信息
    这里写图片描述
  • 如果需要更改HTTPD的工作模型
[root@server3 conf]# rpm -ql httpd | grep bin
/usr/sbin/apachectl
/usr/sbin/htcacheclean
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
  • 虽然核心模块没有编译上面两个模块,但是可以通过更改来更改HTTPD的运行模式
# vim /etc/sysconfig/httpd   这个是`httpd`服务启动脚本的配置文件
# HTTPD=/usr/sbin/httpd.worker 大约在第9行;
  • Listen:表示监听的端口,一般这个需要更改的次数很多;
  • LoadModule:用于表示在启动时,加载的模块;
  • User apache:表示httpd进程工作的用户;
  • Group apache:表示httpd进程工作的组;
  • ServerAdmin root@localhost:用于写明管理员地址;
  • #ServerName www.example.com:80://如果不起用这个指令,服务器在启动的时候,会反向解析IP地址如果能够解析成功,就把解析到的主机名当作服务器的名字,否则可能会出错,警告没有主机名使用localhost当作主机名;需要编辑/etc/hosts补充主机名,或者需要使用DNS进行解析;基于主机名的虚拟主机这个是必须启用的;
  • UseCanonicalName Off:使用正式名称,表示服务器如何实现自我引用的;
  • DocumentRoot "/var/www/html":表示文档目录,默认发布目录;URL路径和本地文件系统路径没有关系URL相对于DocuentRoot的路径而言的,如果更改了这个目录,HTTPD运行的用户必须对于这个目录具有相应的读写权限,并且需要更改对于的访问控制
  • Indexes:用于将所有的文件列出来,建议关闭,除非是用来下载文件,默认是允许的,需要关闭;
  • Includes:表示执行服务器段包含(SSI),不安全,建议关闭;
  • SymLinksifOwnerMatch:表示允许执行执行符号链接,但是连接指向的文本,必须和运行HTTPD的用户是一致的;
  • ExecCGI:是否允许执行CGI脚本;
  • MultiViews:内容协商机制,根据客户端来源,语言,文字,判定应该显示那一种网页;
  • All:表示启用所有选项;
  • AllowOverride None:表示是否允许下面的控制法则生效;
  • 关于某个路径的访问控制
<Directory "/var/www/html">
      Options Indexes FollowSymLinks
      AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
  • 关于</Directory>里面定义的信息的说明,Options:用于定义目录被访问的属性,可以包含多个值,多个值之间使用,隔开,Options支持以下的选项:
    • index:表示索引,也就是将DocumentRoot里面的对应的文件按照索引进行显示,不建议启动index.如果作为文件下载服务器,那么可以是启用的;
    • FollowSymLinks:表示是否允许访问年符号连接真正指向的文件,大多数情况下,符号连接和真实文件的路径不一定是是一致的,不安全,影响服务器速度;
    • Includes:表示是否允许执行服务器包含,例如SSI服务器包含文件,这个也是不安全的;
    • SymLinksifOwnerMatch:表示允许执行符号连接,但是执行的属主和属组必须和httpd的属主和属组匹配;
    • ExecCGI是否允许执行CGI;
    • MultiViews:多功能视图,内容协商机制,根据客户端来源,语言,文字,判定应该显示那一种网页,多用于跨国服务器等;
    • AllowOverride:表示是否允许下面的控制法则生效;
      • AllowOverride支持以下的几种选项:
        • FileInfo:
        • AuthConfig:基于文件里面的帐号和密码来进行访问,这个密码文件需要额外的进行指定,基于用户或者是组来尽心访问
        • Limit:
      • Order allow,deny:用于定义服务器的访问控制顺序,deny是默认值;
      • Allow from all:用于定义服务器的访问控制方式;
      • 对于这段信息指定地址的表示方式:
        • IP
        • network/netmask
        • HOSTNAME
        • DOMAINNAME
        • Partual IP:172.16,172.16.0.0/16,缺省的IP地址;
  • 用户基于帐号密码来进行访问
  • 编辑配置文家添加:

     AllowOverride AuthConfig
     AuthType Basic
     AuthName "Restricted Site....."
     AuthUserFile "/etc/httpd/conf/ht.passwd"
     Require valid-user
  • 接下来需要创建特殊权限的密码文件
[root@server3 ~]# htpasswd -c -m /etc/httpd/conf/ht.passwd hadoop
New password: 
Re-type new password: 
Adding password for user hadoop
[root@server3 ~]# htpasswd  -m /etc/httpd/conf/ht.passwd openstack
New password: 
Re-type new password: 
Adding password for user openstack
  • 测试配置文件语法,并且重新启动服务
[root@server3 ~]# httpd -t
Syntax OK
[root@server3 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
  • 接下来需要输入密码才可以进行访问
    这里写图片描述
    这里写图片描述
  • 如果需要限定某个特定的用户进行访问
     AllowOverride AuthConfig
     AuthType Basic
     AuthName "Restricted Site....."
     AuthUserFile "/etc/httpd/conf/ht.passwd"
     Require user hadoop
  • 重新检测配置文件的语法,并且重新启动服务
[root@server3 ~]# httpd -t
Syntax OK
[root@server3 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
  • 由于浏览器的缓存信息,这里使用elinks命令来尝试进行访问
    这里写图片描述
  • 显示hadoop用户无法登录
    这里写图片描述
  • 如果需要基于组来进行认证,那么创建组文件,并且添加组里面的用户,就可以完成
[root@server3 ~]# vim /etc/httpd/conf/httpd.conf
   AllowOverride AuthConfig
     AuthType Basic
     AuthName "Restricted Site....."
     AuthUserFile "/etc/httpd/conf/ht.passwd"
     AuthGroupFile "/etc/httpd/conf/htgroup"
     Require user hadoop
  • 创建/etc/httpd/conf/htgroup
添加
myusers:hadoop openstack
  • 首先组里面的用户必须首先进行创建;
  • 模块的控制
<IfModule mod_userdir.c>
    UserDir disabled
</IfModule
  • 使用httpd -M用于查看HTTPD支持的所有模块

这里写图片描述

  • 解释几个模块的作用:
    • userdir_module:表示是否允许用户在自己的家目录里面建立网页发布目录的.如果希望能够进行访问,还需要更改权限;
    • 启用userdir_module的示例
[root@server3 conf]# vim httpd.conf
启用
 UserDir public_html
 [root@server3 conf]# useradd westos
[root@server3 conf]# id westos
id: hadop: No such user
[root@server3 conf]# passwd westos
Changing password for user westos.
New password: 
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@server3 conf]# su - westos
[hadoop@server3 ~]$ ls
[hadoop@server3 ~]$ mkdir public_html
[hadoop@server3 ~]$ cd public_html/
[hadoop@server3 public_html]$ vim 
 <h2>test.westos.usedir</h2>
[root@server3 conf]# chmod o+x /home/westos/ -R
[root@server3 conf]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
  • 通过上面的操作出现了权限拒绝的错误提示
  • 查看配置文件里面的说明:
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
  • 按照上面的要求重新更改权限,将~userid更改为711,将~userid/public_html更改为755;
[root@server3 conf]# chmod 711 /home/westos/
[root@server3 conf]# chmod 755 /home/westos/public_html/
  • 通过浏览器访问界面可以得到下面的信息
    这里写图片描述
#<Directory /home/*/public_html>            //用于定义每用户家目录的访问信息
#    AllowOverride FileInfo AuthConfig Limit //和上面的定义是一样的
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS>  //定义对于这些目录的资源获取的方法
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS> //表示不在权限定义范围内的资源获取方法如何进行处理;
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>
  • 继续查看后面的指令信息
    • DirectoryIndex:表示默认的主页名称,自左而右进行匹配;
    • AccessFileName .htaccess:用于控制对于每个目录的访问控制,对于一个目录里面创建这个,然后写访问控制权限;
    • TypesConfig /etc/mime.types:用于使httpd传输支持哪种文件类型;
    • DefaultType text/plain:如果不指名文本信息,当作纯文本信息;
    • HostnameLookups Off:表示用于记录主机名需要将IP地址进行反解,是很浪费时间的;
    • LogFormat:表示对于日志的记录格式,例如"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined:
      • %h:client地址;
      • %l:client主机登录名称;
      • %u:登录网站使用的用户;
      • %t:表示时间产生的时间;
      • \"%r\":请求报文的第一行;
      • %>s:最后一次请求的页面的状态码;
      • %b:响应报文的大小;
      • \"%{Referer}i\":表示是从哪一个页面过来的;
      • \"%{User-Agent}i\":客户端使用的代理;
  • 关于服务器访问的两个概念:
    • PV:Page View,页面访问量,每天的页面访问量,必须是完整页面的访问量,不是单个资源的访问量;
    • US:user view:用户访问量,独立的IP量;
  • Alias /icons/ "/var/www/icons/":表示路径别名,用于将其他路径底下的路径名映射为网页发布目录的路径里面别名;
  • 设置路径别名的过程
[root@server3 conf]# mkdir -pv /www/bbs
[root@server3 conf]# vim httpd.conf
添加:
Alias /luntan "/www/bbs"

[root@server3 conf]# vim /www/bbs/index.html
[root@server3 conf]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
  • 通过浏览器访问
    这里写图片描述

    • 关于指令的详细信息
建议安装
[root@server3 conf]# yum install httpd-manual.noarch -y
[root@server3 conf]# /etc/init.d/httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd:                                            [  OK  ]
  • 通过浏览器访问
    这里写图片描述
  • 可以查看指令的详细信息;
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值