httpd2.2的配置文件常见设置

 

 

 摘要:一个服务的配置文件非常重要,弄懂配置文件是熟练掌握服务的必要前提。

一、httpd-2.2常见文件介绍

(1)配置文件:

主配置文件尽量别改,改自己的子配置文件

  /etc/httpd/conf/httpd.conf 主配置文件

  /etc/httpd/conf.d/*.conf 自配置文件

检查配置语法:

  httpd -t 通用

  service httpd configtest centos7不支持

服务脚本:/etc/rc.d/init.d/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

主进程文件 :服务起来后会自动生成,可以查进程pid,最后不要手动加

  /etc/httpd/run/httpd.pid

日志文件目录:

  /var/log/httpd

    access_log: 访问日志

    error_log :错误日志

帮助文档包:httpd-manual ,按完包后,重启服务,就能看帮助文档,没网也可以看

 

(2)httpd 配置文件的组成:修改前先备份,养成好习惯

# grep "Section" /etc/httpd/conf/httpd.conf  人为的分成3大段,方便管理,可以随便放

### Section 1: Global Environment 全局环境配置

### Section 2: 'Main' server configuration 主服务器

### Section 3: Virtual Hosts 虚拟主机,全是注释,默认没有

 

配置格式:directive(指令) value(值)

  directive: 不区分字符大小写

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

 

二、Httpd 2.2 常见配置:可以在官网或安装帮助包查看帮助

vim /etc/httpd/conf/httpd.conf 总配置文件

1、启动报错:提示没有名字fqdn

在总配置文件搜索 /ServerName,把注释去掉,随便写,最好写自己的网站名;启动就不报错了

修改后:

 

2、显示服务器版本信息

ServerTokens:管理响应首部信息的,显示服务器版本信息

搜索/ServerTokens,文件默认是OS,可以注释掉、删掉,有默认值full

ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full

  配置文件在的设置      首部显示的信息

① ServerTokens Prod[uctOnly]:Server: Apache

② ServerTokens Major: Server:Apache/2

③ ServerTokens Minor: Server:Apache/2.0

④ ServerTokens Min[imal]: Server:Apache/2.0.41

⑤ ServerTokens OS: Server:Apache/2.0.41 (Unix)

⑥ ServerTokens Full (or not specified):Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

This setting applies to the entire server and cannot be enabled or disabled on a virtualhost-by-virtualhost basis. After version 2.0.44, this directive also controls the information presented by the ServerSignature directive.

建议使用:ServerTokens Prod 安全,显示越详细越不安全

可以查看帮助信息,要安装httpd-manual包,帮助信息很详细

实例:cur -I 192.168.37.106 查询头部信息

另:可以在调度器上设置:直接隐藏版本信息或随意修改

 

3、修改监听的IP和Port

搜索/Listen,默认80

Listen [IP:]PORT,不要随意更改,可以用于只想让特定的ip访问,不让其他人访问

(1) 省略IP 表示为0.0.0.0; 端口绑定所有ip

(2) Listen 指令至少一个,可重复出现多次,写多个,不能为空或注释掉,注释掉服务起不来

  Listen 80

  Listen 8080 写多个就可开启多个端口,但是访问的还是同一个网站

注意:改了端口,要在访问时加上自己改的端口

(3) 修改监听socket,重启服务进程方可生效

 

3、持久连接

Persistent Connection :连接持久建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接 KeepAlive Off

  断开条件:数量限制:100

  时间限制:以秒为单位, httpd-2.4 支持毫秒级

  副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应

  折中:使用较短的持久连接时间

设置: KeepAlive On|Off

   KeepAliveTimeout 15

  MaxKeepAliveRequests 100

测试:telnet WEB_SERVER_IP PORT

  GET /URL HTTP/1.1    模仿报文首部

  Host: WEB_SERVER_IP

 

4 、MPM( Multi-Processing Module )多路处理模块

(1)MPM 工作模式介绍:prefork、worker、 event(试验阶段)

① prefork 多进程I/O 模型每个进程响应一个请求,默认模型

  一个主进程 :生成和回收n个子进程 , 创建套接字,不响应请求

  多个子进程:工作work 进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024个

② worker :复用的多进程I/O 模型, 多进程多线程,IIS 使用此模型

  一个主进程: 生成m 个子进程,每个子进程负责生成n个线程,每个线程响应一个请求 ,并发响应请求:m*n

 event :事件驱动模型(worker 模型的变种)

  一个主进程:生成m个子进程,每个进程直接响应n个请求,并发响应请求:m*n ,有专门的线程来管理这些keep-alive 类型的监控线程,当有真实请求时, 将请求传递给服务线程,执行完毕后,又允许释放 。这样增强了高并发场景下的请求处理力 能力

httpd-2.2: event 测试版 ,centos6 默认

httpd-2.4 :event 稳定版,centos7 默认

  图示:

① prefork MPM

② worker MPM

③ event MPM

注意:httpd-2.2 不支持同时编译多个模块,所以只能编译时选定一个;rpm 安装的包提供三个二进制程序文件,分别用于实现对不同MPM 机制的支持

(2)确认方法:

  ps aux | grep httpd

  默认为/usr/sbin/httpd, 即prefork 模式

查看模块列表:

  查看静态编译的模块

    httpd -l

  查看静态编译及动态装载的模块

    httpd -M

动态模块加载:不需重启即生效

动态模块路径:/usr/lib64/httpd/modules

 

(3)更换使用的httpd 程序模块:

/etc/sysconfig/httpd 在这个文件中改

① HTTPD=/usr/sbin/httpd.worker  默认是被注释的,去掉注释就切换到worker程序了

重启服务生效

pstree -p|grep httpd 查看进程和线程

httpd.worker -l 模块换了,命令也换了

② Httpd 2.4 与之不同

以动态模块方式提供

配置文件:/etc/httpd/conf.modules.d/00-mpm.conf

httpd -M |grep mpm

重启服务 生效

pstree -p|grep httpd 查看进程和线程

 

(4)prefork 的默认配置:主配置文件中,搜索/prefork

<IfModule prefork.c> 根据工作环境设置

StartServers 8 一开启服务就准备8个进程

MinSpareServers 5 最小的空闲进程,先预留,不够就生成

MaxSpareServers 20 最大空闲进程

ServerLimit 256 最多进程数, 最大256

MaxClients 256 最大并发数

MaxRequestsPerChild 4000 子进程最多能处理请求数量。在处理MaxRequestsPerChild 个请求之后, 子进程将会被父进程终止,这时候子进程占用的内存就会释放( 为0时永远不释放)

</IfModule>

 

(5) worker 的默认配置:主配置文件中,搜索/worker

<IfModule worker.c>

StartServers 4 一开启服务就准备4个进程,4x25=100线程

MaxClients 300 最多300个线程

MinSpareThreads 25 最小空闲25线程

MaxSpareThreads 75 最大空闲75线程,和上边冲突,开服务先开启4个进程,再杀死1个进程

ThreadsPerChild 25 每个子进程最大25个线程

MaxRequestsPerChild 0 无限制

</IfModule>

(6) 测试性能:ab命令 yum -y install httpd-tools

ab -c 100 -n 1000 http://192.168.30.106/

-  c:并发连接数

  -n:总的连接数

结果:发现prefork和worker性能没有什么较大的差异

 

5 、DSO:Dynamic Shared Object

① 加载动态模块配置:/etc/httpd/conf/httpd.conf 主配置文件

配置指定实现模块加载格式:搜索/LoadModule

② 格式:

LoadModule <mod_name> <mod_path>

模块文件路径可使用相对路径:相对于ServerRoot 服务的根(设置的为/etc/httpd)

③ httpd -M 可以查询模块信息,若删除或注释掉一个模块,那个模块的功能就会禁用,且httpd -M 查询不到

因此,当我们需要用PHP时,可以写入PHP的模块,就能使用了

示例:

LoadModule auth_basic_module

modules/mod_auth_basic.so

 

6 、定义'Main' server (主站点) 的文档页面路径

搜索/DocumentRoot

格式:DocumentRoot "/path"

作用:文档路径映射:

  DocumentRoot 指向的路径为URL 路径的起始位置

注意:

① 可以写多行,但是下边的会覆盖上边的,最后还是使用下边的,写到子配置文件一样,因为子配置文件Include conf.d/*.conf在这行设置的上边,会被这行设置覆盖。

② 若设置的主站点不存在,那么服务会启动失败!

示例:

  DocumentRoot "/app/site1"

   http:/192.168.30.106/--> /app/site1/index.html

注意:SELinux 和iptables 的状态,要关掉

 

7、定义站点主页面

搜索:/DirectoryIndex

格式:DirectoryIndex index.html index.html.var

分析:

① 查询http://192.168.30.106/ 及其子目录时,不指定文件,可以默认打开目录下的index.html文件

② 若没有设置中的两个文件,看其他设置:下设置9,默认是报错;

有特定设置会显示特定设置,如首页;子配置文件 /etc/httpd/conf.d/welcome.conf 有设置,若只有 / 或多个,目录下没有index.html,就显示报错页面,welcome.conf这个设置优先级高,安全

报错页面

 

8 、站点访问控制常见机制

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

 文件系统路径:格式

<Directory "/path">

...

</Directory>

<Files "/path/file">

...

</Files>

<FilesMatch "PATTERN">

...

</FilesMatch>

例:主配置文件中,不能访问 .ht 开头的文件的设置

 

② URL 路径:支持正则,通配符

<Location "">

...

</Location>

<LocationMatch "">

...

</LocationMatch>

例:子配置文件,/etc/httpd/conf.d/welcome.conf 的设置

注意:支持正则,通配符

示例:

<FilesMatch "\.(gif|jpe?g|png)$"> 正则

<Files "?at.*"> 通配符

<Location /status> 绝对路径的目录

<LocationMatch "/(extra|special)/data">

 

9 、<Directory> 中"基于源地址"实现访问控制

(1) Options :后跟1 个或多个以空白字符分隔的选项列表,可在总配置文件中修改,也可从创建一个自配置文件中修改设置

在选项前的+ ,- 表示增加或删除指定选项

  常见选项:

  Indexes :指明的URL 路径下不存在定义的主页面资源相符的资源文件时,返回索引列表给用户,默认是不允许,加上不安全;有需要的时候,例如做yum源的时候

  FollowSymLinks :允许访问符号所指向的源文件,例:链接文件,默认允许

  None :全部禁用

  All:全部允许

注意:若冲突,后边的设置会覆盖前边的

子目录也可以设置的和父目录不一样,放在下边

例:vim /etc/httpd/conf.d/test.conf 子配置文件

 

(2) AllowOverride,和上边实现的效果一样,就是把设置放在目录的隐藏文件下.htaccess

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

用法:vim /etc/httpd/conf.d/test.conf

只对<directory> 语句有效

  AllowOverride All: 所有指令都有效

  AllowOverride None :.htaccess 文件无效

  AllowOverride AuthConfig Indexes 除了AuthConfig和Indexes的其它指令都无法覆盖

然后在.htaccess文件中设置,.htaccess放在所需要控制的目录下,例bbs目录

vim /app/site1/.htaccess

options +indexes -followsymlinks

 

(3) order 和allow 、deny,在2.4中已无效,有另外的权限控制

order :定义生效次序;写在后面的表示默认法则,覆盖,优先级高

  Order allow,deny

  Order deny,allow

  Allow from, Deny from

来源地址的表达方法:IP、网络:

  172.16

  172.16.0.0

  172.16.0.0/16

  172.16.0.0/255.255.0.0

分析:① 若不冲突,allow,deny都产生效果,例

若冲突,看谁在后,在后的优先级高,但是只限于冲突的

例:除107,这个网段的其他ip可以访问,但这个网段以外,都拒绝

③ 没在deny、allow中设置的,看allow/deny谁在后边,谁优先级高

 

10 、日志设定

日志类型:

  访问日志

  错误日志

错误日志:

  ErrorLog logs/error_log

  LogLevel warn

  loglevel 可选值:

  debug, info, notice, warn,error

  crit, alert, emerg

 

访问日志:搜索:/LogForma

定义访问日志格式:LogFormat format strings,

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

下边有选择哪一个日志

使用日志格式:

CustomLog logs/access_log combined

参考帮助:

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" 的值;即从哪个页面中的超链接跳转至当前页面的

  防止倒链,i就是首部的意思

• %{User-Agent}i 请求报文中首部"User-Agent" 的值;即发出请求的应用程序

帮助文档里都有

查询日志:tail /var/log/httpd/access_log

 

11 、设定默认字符集

AddDefaultCharset UTF-8(全球) 默认

中文字符集:GBK, GB2312(中文简体), GB18030

 

12 、定义路径别名

格式: Alias /URL/ "/PATH/" /URL/有没有都无所谓,虚拟的目录

Alias /download/ "/rpms/pub/"

  例:http://www.magedu.com/download/bash.rpm ==> /rpms/pub/bash.rpm

  http://www.magedu.com/images/logo.png ==> /www/htdocs/images/logo.png

 

13 、status 页面

这个功能需要status_module 模块

  httpd -M | grep status 查询这个模块有没有被加载

在总配置文件中搜索/server-status

LoadModule status_module modules/mod_status.so 这个模块在总配置文件有加载

<Location /server-status> 本来是注释掉的

  SetHandler server-status2 这个名字随便写,只要访问时用这个名字就行

  Order allow,deny

  Allow from 192.168.30.0/24

</Location>

ExtendedStatus On 显示扩展信息,默认也是注释的

显示状态页面

状态的类型:

  "-"等待连接 "S"启动 "R"处于读取状态

  "W"发送应答 "K"保持长连接 "D"dns查询

  "C"正处于关闭状态 "L"记录日志 "G"优雅的终止,温柔的断开

  "r"把空闲的worker进程清理 "."没有正常的进程

 

转载自:http://www.cnblogs.com/along21/p/7691642.html

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


不积跬步无以至千里

转载于:https://www.cnblogs.com/dannylinux/articles/7999156.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 149. 直线上最多的点数

题目 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1&#xff1a; 输入&#xff1a;points [[1,1],[2,2],[3,3]] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;points [[1,1],[3,…

solidity开发以太坊代币智能合约

智能合约开发是以太坊编程的核心之一&#xff0c;而代币是区块链应用的关键环节&#xff0c;下面我们来用solidity语言开发一个代币合约的实例&#xff0c;希望对大家有帮助。 以太坊的应用被称为去中心化应用&#xff08;DApp&#xff09;&#xff0c;DApp的开发主要包括两大部…

2019大数据课程_根据数据,2019年最佳免费在线课程

2019大数据课程As we do each year, Class Central has tallied the best courses of the previous year, based on thousands of learner reviews. (Here are the rankings from 2015, 2016, 2017, and 2018.) 与我们每年一样&#xff0c;根据数千名学习者的评论&#xff0c; …

2017-12-07 socket 读取问题

1.用socke阻塞方式读取服务端发送的数据时会出现读取一直阻塞的情况&#xff0c;如果设置了超时时间会在超时时间后读取到数据: 原因&#xff1a;在不确定服务器会不会发送 socket发送的数据不会返回null 或者-1 所以用常规的判断方法是不行的。 解决办法有两个&#xff1a;1 …

静态代理设计与动态代理设计

静态代理设计模式 代理设计模式最本质的特质&#xff1a;一个真实业务主题只完成核心操作&#xff0c;而所有与之辅助的功能都由代理类来完成。 例如&#xff0c;在进行数据库更新的过程之中&#xff0c;事务处理必须起作用&#xff0c;所以此时就可以编写代理设计模式来完成。…

svm机器学习算法_SVM机器学习算法介绍

svm机器学习算法According to OpenCVs "Introduction to Support Vector Machines", a Support Vector Machine (SVM):根据OpenCV“支持向量机简介”&#xff0c;支持向量机(SVM)&#xff1a; ...is a discriminative classifier formally defined by a separating …

6.3 遍历字典

遍历所有的键—值对 遍历字典时&#xff0c;键—值对的返回顺序也与存储顺序不同。 6.3.2 遍历字典中的所有键 在不需要使用字典中的值时&#xff0c;方法keys() 很有用。 6.3.3 按顺序遍历字典中的所有键 要以特定的顺序返回元素&#xff0c;一种办法是在for 循环中对返回的键…

Google Guava新手教程

以下资料整理自网络 一、Google Guava入门介绍 引言 Guavaproject包括了若干被Google的 Java项目广泛依赖 的核心库&#xff0c;比如&#xff1a;集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [comm…

HTML DOM方法

querySelector() (querySelector()) The Document method querySelector() returns the first element within the document that matches the specified selector, or group of selectors. If no matches are found, null is returned.Document方法querySelector()返回文档中与…

leetcode 773. 滑动谜题

题目 在一个 2 x 3 的板上&#xff08;board&#xff09;有 5 块砖瓦&#xff0c;用数字 1~5 来表示, 以及一块空缺用 0 来表示. 一次移动定义为选择 0 与一个相邻的数字&#xff08;上下左右&#xff09;进行交换. 最终当板 board 的结果是 [[1,2,3],[4,5,0]] 谜板被解开。…

数据科学领域有哪些技术_领域知识在数据科学中到底有多重要?

数据科学领域有哪些技术Jeremie Harris: “In a way, it’s almost like a data scientist or a data analyst has to be like a private investigator more than just a technical person.”杰里米哈里斯(Jeremie Harris) &#xff1a;“ 从某种意义上说&#xff0c;这就像是数…

python 算术运算

1. 算术运算符与优先级 # -*- coding:utf-8 -*-# 运算符含有,-,*,/,**,//,% # ** 表示^ , 也就是次方 a 2 ** 4 print 2 ** 4 , aa 16 / 5 print 16 / 5 , aa 16.0 / 5 print 16.0 / 5 , a# 结果再进行一次floor a 16.0 // 5.0 print 16.0 // 5.0 , aa 16 // 5 print …

c语言编程时碰到取整去不了_碰到编程墙时如何解开

c语言编程时碰到取整去不了Getting stuck is part of being a programmer, no matter the level. The so-called “easy” problem is actually pretty hard. You’re not exactly sure how to move forward. What you thought would work doesn’t.无论身在何处&#xff0c;陷…

初创公司怎么做销售数据分析_为什么您的初创企业需要数据科学来解决这一危机...

初创公司怎么做销售数据分析The spread of coronavirus is delivering a massive blow to the global economy. The lockdown and work from home restrictions have forced thousands of startups to halt expansion plans, cancel services, and announce layoffs.冠状病毒的…

leetcode 909. 蛇梯棋

题目 N x N 的棋盘 board 上&#xff0c;按从 1 到 N*N 的数字给方格编号&#xff0c;编号 从左下角开始&#xff0c;每一行交替方向。 例如&#xff0c;一块 6 x 6 大小的棋盘&#xff0c;编号如下&#xff1a; r 行 c 列的棋盘&#xff0c;按前述方法编号&#xff0c;棋盘格…

Python基础之window常见操作

一、window的常见操作&#xff1a; cd c:\ #进入C盘d: #从C盘切换到D盘 cd python #进入目录cd .. #往上走一层目录dir #查看目录文件列表cd ../.. #往上上走一层目录 二、常见的文件后缀名&#xff1a; .txt 记事本文本文件.doc word文件.xls excel文件.ppt PPT文件.exe 可执行…

WPF效果(GIS三维篇)

二维的GIS已经被我玩烂了&#xff0c;紧接着就是三维了&#xff0c;哈哈&#xff01;先来看看最简单的效果&#xff1a; 转载于:https://www.cnblogs.com/OhMonkey/p/8954626.html

css注释_CSS注释示例–如何注释CSS

css注释Comments are used in CSS to explain a block of code or to make temporary changes during development. The commented code doesn’t execute.CSS中使用注释来解释代码块或在开发过程中进行临时更改。 注释的代码不执行。 Both single and multi-line comments in…

r软件时间序列分析论文_高度比较的时间序列分析-一篇论文评论

r软件时间序列分析论文数据科学 &#xff0c; 机器学习 (Data Science, Machine Learning) In machine learning with time series, using features extracted from series is more powerful than simply treating a time series in a tabular form, with each date/timestamp …

leetcode 168. Excel表列名称

题目 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1&#xff1a; 输入&#xff1a;columnNumber 1 输出&#xff1a;“A” 示例 2&…