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

[经验分享] Apache Httpd 2.2 配置全解析(CentOS6)

[复制链接]

尚未签到

发表于 2018-11-18 09:58:49 | 显示全部楼层 |阅读模式
服务器应用
通常我们所说的,服务器应用一般会有两种类型,http服务器应用程序服务器 ,而http服务器的典型代表有Apache Http ServerNginx应用程序服务器的典型代表则有IIS,Tomcatjetty
很多做过java开发的朋友应该都知道 Apache Tomcat,但是二者之间具体有什么区别和联系呢?大家可以自己上网查询下资料,也可以自己参考 https://www.zhihu.com/question/32212996,去了解一下。
当然,也可以去这个网站,查看目前主流服务器的市场占有率。https://www.netcraft.com/
Apache Httpd 2.2 配置全解析
目前,在计算机运维领域,有比较流行的几种架构,分别是LAMP和LNMP。这里LAMP中的A指的就是Apache Httpd Server 。
CentOS 6 系统中默认安装了Httpd2.2版本,而CentOS7 默认支持的则是Httpd 2.4 版本,二者在使用上有所不同。同时,如果想要在CentOS 6 上安装Httpd2.4 的话,也需要花费一些功夫。
本篇文章,我们一起来了解一下,Apache Httpd 2.2 的配置,其余的内容留作以后来介绍。
CentOS 6 中 httpd的程序环境
配置文件
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
检查修改后的配置文件中是否存在语法错误
httpd –t
service httpd configtest
httpd的服务脚本
/etc/rc.d/init.d/httpd
httpd的服务脚本的配置文件
/etc/sysconfig/httpd
服务控制和启动
chkconfig httpd on|off
service {start|stop|restart|status|configtest|reload} httpd
站点网页文档根目录
/var/www/html
模块文件路径
/etc/httpd/modules
/usr/lib64/httpd/modules
主程序文件
/usr/sbin/httpd
/usr/sbin/httpd.worker
/usr/sbin/httpd.event
主进程文件
/etc/httpd/run/httpd.pid
日志文件目录
/var/log/httpd
access_log: 访问日志
error_log:错误日志
帮助文档包
httpd-manual
httpd配置文件的组成
# 执行下面的这条命令就可以看到,配置文件一共由下面三部分组成。
[root@centos6 ~]$grep "Section" /etc/httpd/conf/httpd.conf
### Section 1: Global Environment
### Section 2: 'Main' server configuration
### Section 3: Virtual Hosts
配置格式
# 指令值
directive value
directive: 指令,不区分字符大小写
value: 值为路径时,是否区分大小写,取决于文件系统
上面所述的所有的内容,都可以执行 rpm -ql httpd 中查看到。
了解了上面的基本信息之后,我们来启动一下httpd 服务。
[root@centos6 ~]$service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for centos6.pojun.tech
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
从上面的提示信息中我们可以看出,这里有两个小问题。下面我们解决一下,这两个小问题。从问题描述中我们可以看出,HTTPD 服务不能明确服务器主机的名字,最好使用127.0.0.1来指定一下。
我们修改一下/etc/httpd/conf/httpd.conf文件。
DSC0000.png
这样的话,再重启的时候,就不会有问题提示了。
httpd 2.2 的常见配置
这里所说的配置信息都位于/etc/httpd/conf/httpd.conf
1、显示服务器的版本信息
显示服务器的版本信息的意思是说,我们在日常工作中,可能会通过一些手段,获取某些网段的服务器信息,如果我们的HTTP服务器的信息对于一个陌生的用户完全暴露,将会大大导致服务器的安全风险。
下图是我们通过工具获取到Microsoft的服务器信息(吐槽下,微软自己竟然还用别人的服务器,大家风范哪里去了(●’’●))。
DSC0001.png
下面是我本机的Http 2.2 服务器的信息
[root@centos6 ~]$curl -I 172.18.2.66
HTTP/1.1 200 OK
Date: Tue, 26 Sep 2017 09:22:39 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Mon, 25 Sep 2017 07:28:24 GMT
ETag: "320951-0-559fe80fa6ca6"Accept-Ranges: bytes
Connection: close
Content-Type: text/html; charset=UTF-8
这里我们能够看到,不仅将服务器的版本暴露了出来,连操作系统的信息也显示了出来。下面我们介绍一下Httpd服务器显示信息的设置。 使用ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full 配置。
# 只显示产品名称
ServerTokens Prod[uctOnly] :Server: Apache
# 显示大版本号
ServerTokens Major: Server: Apache/2
# 显示小版本号
ServerTokens Minor: Server: Apache/2.2
# 显示精确的版本号
ServerTokens Min[imal]: Server: Apache/2.2.15
# 显示系统
ServerTokens OS: Server: Apache/2.2.15 (CentOS)
#全部都显示
ServerTokens Full (or not specified): Server: Apache/2.0.41(Unix) PHP/4.2.2 MyMod/1.2 DSC0002.png
通常来说,推荐使用 prod 方式,暴露的信息越少,相对的也就乐安全。
2、修改监听的IP和PORT
配置的格式为 Listen [IP:]PORT

  •   省略IP表示为0.0.0.0;
  •   Listen指令至少一个,可重复出现多次
  •   修改监听socket,重启服务进程方可生效
DSC0003.png
3、持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接。
断开持久连接的条件:

  •   数量限制:假设设定的100
  •   时间限制:以秒为单位,HTTPD-2.4支持毫秒级。
副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应
解决办法:使用较短的持久连接时间。

4、MPM( Multi-Processing Module)多路处理模块
httpd 2.2 提供了三种不同类型的多路处理模块。prefork,worker,event(实验阶段)。 想要指定相应的处理模块,修改/etc/sysconfig/httpd 文件。

每一种多路处理模块都有相应的配置,打开 /etc/httpd/conf/httpd.conf
prefork模块的配置信息

其中参数的含义如下所示。

  •   StartServers : 服务开始时的默认进程数
  •   MinSpareServers : 进程数最少数量
  •   MaxSpareServers : 最大的空闲进程数
  •   ServerLimit : 最大的进程数,最大20000
  •   MaxClients : 最大的并发数量
  •   MaxRequestsPerChild : 子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)
worker模块的配置信息

其中参数的含义如下所示。

  •   StartServers : 服务开始时的默认进程数
  •   MaxClients : 最大的并发数量
  •   MinSpareThreads: 最小的空闲线程数量,低于这个数量,系统就会立马开启新的进程
  •   MaxSpareThreads: 最大的空闲线程数量,这个值可能会与StartServers值冲突
  •   ThreadPerChild : 每个进程支持的线程数量,因为这个值会导致StartServers和MaxSpareThreads 值产生冲突。
  •   MaxRequestsPerChild : 子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)
5、DSO: Dynamic Shared Object 动态模块配置
使用 httpd -M命令可以查看目前已经加载的动态模块。

配置指定实现模块加载格式:LoadModule   模块文件路径可使用相对路径:相对于ServerRoot(默认/etc/httpd,在/etc/httpd/conf/httpd.conf 文件中已经指定ServerRoot)
例如 auth_basic_module modules/mod_auth_basic.so就是指定用户在访问服务器的时候需要提供身份验证的模块。
6、 定义’Main’ server的文档页面路径
所谓默认主页的意思就是说,当我们只通过域名访问的时候,系统会默认跳转到某一页面,这个页面就是默认主页,所以这里可以设置默认主页的路径。

DocumentRoot指向的路径为URL路径的起始位置
7、 定义站点主页面
站点主页面,也就是我们所说的默认首页啦。

8、站点访问控制常见机制
可基于两种机制指明对哪些资源进行何种访问控制,访问控制机制有两种:客户端来源地址,用户账号

  •   基于文件系统路径控制

Options None
AllowOverride None
AuthType Basic# 验证的方式
AuthName "String"# 验证的提示信息
AuthUserFile "/PATH/HTTPD_USER_PASSWD_FILE"#密码文件存放路径
Require user username1 username2 ...# 输入的用户名称
2、 提供账号和密码存储(文本文件),使用专用命令完成此类文件的创建及用户管理
# /PATH/HTTPD_PASSWD_FILE 这个路径在前面的配置中已经指定  
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c:自动创建文件,仅应该在文件不存在时使用
-m:md5格式加密
-s: sha格式加密
-D:删除指定用户(二)基于组的认证配置
1、定义安全域

运维网声明 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-636467-1-1.html 上篇帖子: Apache 访问控制 mod_rewrite 下篇帖子: Apache Httpd 2.2 配置CA证书,实现Https加密通讯
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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