设为首页 收藏本站
查看: 2313|回复: 0

[经验分享] CentOS6服务管理之WEB-Apache httpd配置文件详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-15 09:29:24 | 显示全部楼层 |阅读模式
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数电脑操作系统中运行,由于其跨平台和安全性。被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
其程序包是httpd:
[iyunv@www ~]# rpm -qa httpd
httpd-2.2.15-39.el6.centos.x86_64

httpd是yum安装或者是rpm包安装的话,主配置文件会默认保存在/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf为主配置文件的辅助性配置文件
下面来介绍一下httpd的程序的主配置文件重要的一些部分:

httpd.conf配置文件由三部分组成:
全局环境
主服务器配置
虚拟主机

一.全局环境
### Section 1: Global Environment
1.服务程序根目录:指出服务器保存其配置、出错和日志文件等的根目录。
ServerRoot "/etc/httpd"

2.PID文件存放路径:相对路径
PidFile run/httpd.pid

3、开启或关闭持续连接:
KeepAlive {On|Off}

4.持续连接最大连接数
MaxKeepAliveRequests 50   #最大连接数50

5.持续连接超时时间
KeepAliveTimeout 15       #超时时间为15s,单位默认为s

6.针对MPM的设置,为多道处理模块
## Server-Pool Size Regulation (MPM specific)
1
2
3
prefork:一个进程响应一个请求,稳定可靠,任何进程崩溃了,不会影响另外一个进程,尤其并发量很大时对资源消耗比较大,尤其涉及到大量的进程切换;
worker:一个进程生成多个线程,一个线程响应一个请求
event:一个进程同时响应多个请求,但不会生成线程




注:对于worker模式:启动多个进程,每个进程生成多个线程,对于thread由于多个线程共享同一个进程资源,所以某个线程打开某一个文件并进行了访问的话,那么第二个线程就不用再打开了,直接访问就可以了;这样效率会高一些;但是多个线程在工作时写一个资源的话会导致资源争用,所以为了避免资源竞争,必须要加锁,因此不能良好的解决锁竞争的话,事实上线程是不是比进程的效率更高,这个很难说,尤其是Linux并不是原生态支持线程的,这也是为什么默认使用prefork而不使用worker的原因。

http -l  #查看编译进内核的模块
如果向使用不同的MPM,直接修改文件/etc/sysconfig/httpd文件中的HTTPD项即可
#HTTPD=/usr/sbin/httpd.worker

preforck模块:
<IfModule preforck.c>     判断模块是否存在
  StartServers           默认启动的工作进程数
  MinSpareServers        最少空闲进程数
  MaxSpareServers        最大空闲进程数
  ServerLimit            最大活动进程数
  MaxClients             最大并发连接数,最多允许发起的连接请求个数
  MaxRequestsPerChild    每个子进程在生命周期内最大允许服务的请求个数
</IfModule>
实例:
1
2
3
4
5
6
7
8
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>




worker模块:
<IfModule worker.c>
StartServers           默认启动的工作进程数
MaxClients             最大并发连接数
MinSpareThreads        最少空闲线程数
MaxSpareThreads        最多空闲线程数
ThreadsPerChild        每个自己进程生成的线程数
MaxRequestsPerChild    每个子进程在生命周期内最大允许服务的请求个数
</IfModule>
实例:
1
2
3
4
5
6
7
8
<IfModule worker.c>
StartServers         4
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>




7、监听套接字
Listen [IP:]port
此指令可以出现多次,用于指定监听多个不同的套接字,IP地址可以省略,如果IP地址省略则表示监听在本机所有的ip地址上
Listen  172.16.31.5:80
Listen 8080

8.DOS模块的加载方式,动态模块
# Dynamic Shared Object (DSO) Support
LoadModule module_name /path/to/module
可以使用绝对路径,也可以使用相对路径,如果使用相对路径,则是相对于ServerRoot所定义的位置而言的
httpd -m    #列出所有已加载的DOS模块与非DOS模块
实例:
LoadModule auth_basic_module modules/mod_auth_basic.so


二.主服务器配置
### Section 2: 'Main' server configuration
1.主服务器管理员邮箱
ServerAdmin root@localhost

2.主服务器名称
#ServerName www.example.com:80

3.配置站点根目录
DocumentRoot /path/to/somewhere
只能使用绝对路径
#DocumentRoot "/var/www/html"

4.页面访问属性
<Direcotry "/path/to/somewhere">
    Options 选项
       Indexes:缺少指定的默认主页时,允许将目录中的所有文件以列表形式返回给用户,危险:慎用
       FollowsymLinks:允许跟随符号链接所指向的岁暗示文件
       None:所有的都不启用
       All: 所有的都启用
       ExecCGI: 允许使用mod_cgi模块执行CGI脚本
       Includes: 允许mod_include模块实现服务器端包含
       IncludesNOEXEC:允许包含但不允许执行CGI脚本
       MultiViews:允许使用mod_negotication实现内容协商
       SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号连接所指向的原始文件
  </Direcotry>
默认:
1
2
3
4
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>



5.针对主服务器根目录的配置
# This should be changed to whatever you set DocumentRoot to.
基于主机的访问控制(2.2系列的配置)
<Direcotry "/path/to/somewhere">
    Options
    AllowOverride
        None 不禁用下面选项
    Order 次序,写在后面的为默认
        allow,deny: 没有允许的都拒绝
        deny,allow:没有拒绝的都允许
    Allow from   允许通过的主机
    Deny from    拒绝通过的主机
         可以是单独的ip地址,也可以是一个网段
          172.16.0
          172.16.0.0
          172.16.0.0/24
          172.16.0.0/255.255.255.0
           表示的都为172.16.0网段
</Direcotry>
如果都匹配或都不匹配时则以默认的为准,否则以匹配到的为准


6.定义默认主页面
DirectoryIndex
查询顺序为依次查询
DirectoryIndex index.html index.html.var

7.错误日志位置
ErrorLog logs/error_log

8.错误日志记录级别
LogLevel warn

9.配置日志功能
CustomLog logs/access_log combined
access.log 访问日志,其需要记录的内容需要自定义
error.log 错误日志,
访问日志:
CustomLog "/path/to/log_file" LogFormat
LofFormat定义的日志格式,只解释最常用的一种
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
%h: 客户端地址
%l:远程的登陆名,通常为-
%u: 认证时的远程用户名,通常为-
%t: 接收到的请求时的时间,为标准英文格式时间+时区
\":表示转义,显示"
%r:请求报文的起始行
%>s: 响应状态码
%b:以字节响应报文的长度,不包含头报文
%{Referer}i:记录指定请求报文首部的内容
%{User-Agent}i:用户使用的工具      
详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats


10.路径别名
Alias /alias/ "/path/to/somewhere"
意味着访问http://Server_IP/alias时,其页面文件来自于/path/to/somewhere中
实例;
1
Alias /icons/ "/var/www/icons/"





11.指定默认的字符集
AddDefaultCharset
实例:
AddDefaultCharset UTF-8


12.脚本路径别名(CGI接口)
CGI:Common Gateway Interface(通用网关接口)使web可以跟一个应用程序进行通信,从通信环境中获得结果,前提必须加载mod_alias和mod_cgi模块
一般在第一行写入 echo “Content-Type:text/html”
ScriptAlias /URL/ "/path/to/somewhere" somewhere下的文件可以被执行
格式一般为
cat << EOF
  Content-Type:text/html
  <pre>
    The Time is : `date`
  </pre>
EOF


13.基于用户的访问控制
虚拟用户:不是系统上的用户,只是为了获取某种特定的资源烈性的一种虚拟用户
可以基于文件、SQL数据库、DBM、ldap认证
认证类型(auth)
basic:基本认证,账号和密码以明文发送
digest:摘要认证,hash编号以后再发送
认证提供者(authentiation provide):账号和密码的存放位置
授权机制(authorization):根据什么进行授权
案例:基于文件,做基本认证根据用户和组进行授权
   1、编辑配置文件,为需要认证的目录配置认证机制
   <Directory "/server-status">
       options None
       AllowOverride AuthConfig 使用认证配置
       AuthType Basic 使用基本认证
       AuthName "Private Area" 质询时标题
       AuthUserFile /etc/http/conf/.htpasswd  密码的存放位置
       Require  user tom  jerry |Require  valid-user  可访问的用户
    </Directory>
   注:
Require  valid-user   #运行帐号文件中的所有用户访问
Require  user  tom   #仅允许指定用户登录

   2、使用htpsswdm命令使用生成认证库
     htpasswd
     -c 创建密码,创建第一个用户时使用
     htpasswd -c -m /etc/http/conf/.htpasswd tom
     -m MD5格式存放
     -b 批量模式
     -D 删除用户
   3、基于组认证
   <Directory "/server-status">
       options None
       AllowOverride AuthConfig 使用认证配置
       AuthType Basic 使用基本认证
       AuthName "Private Area" 质询时标题
       AuthgroupFile /etc/http/conf/.htpasswd  密码的存放位置
       Require group GroupName  可访问的用户
   </Directory>
      先创建用户,在创建组
      组文件:
组文件:每一行定义一个组
格式:
GROUP:user1 user2  user3

三.虚拟主机
### Section 3: Virtual Hosts
如果开启虚拟主机就需要开启:
NameVirtualHost *:80

一个物理服务器提供多个站点;使用虚拟要先取消中心主机
注意:先注释或取消Main Server;注释DocumentRoot指令即可

基于不同的IP实现不同的虚拟主机:变化IP
基于不同的port实现不同的虚拟主机:变化port
基于不同的主机名实现不同的虚拟主机:变化ServerName的值
通过请求报文中的HOST来实现不同的虚拟主机的访问
<VirtualHost IP:port>
    SeverName               #主机名
    DocumentRoot ""         #服务器目录
       <Directory "">
       </Directory>
    ServerAlias             #配置别名
    ServerAdmin             #管理邮箱
</VirtualHost>
虚拟主机可以单独配置用户认证、访问日志、错误日志、别名、脚本别名等

基于主机名的实例:
<VirtualHost IP:80>
    DocumentRoot  /var/www1
    ServerName  www.test.com
    ServerAlias web.test.com
    ServerAlias test.com
    ErrorLog logs  
    CustomLog       "/var/log/httpd/access_test.log"   combind
</VirtualHost>

<VirtualHost IP:80>
    DocumentRoot    /var/www2
    ServerName  www.oracle.com
    ErrorLog logs  
    CustomLog     "/var/log/httpd/access_oracle.log"   combind
</VirtualHost>


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-38023-1-1.html 上篇帖子: Apache Mina2.x网络通信框架使用入门 下篇帖子: CentOS 6.5 SVN 服务器搭建文档 配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表