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

[经验分享] Centos 6 apache httpd 2.2 主要配置详解

[复制链接]

尚未签到

发表于 2018-11-18 06:26:36 | 显示全部楼层 |阅读模式
实验环境:VMware Workstation Pro 14(试用版)
系统平台:
CentOS release 6.9 (Final)             内核  2.6.32-696.el6.x86_64
Server version: Apache/2.2.15 (Unix)

  模块文件路径:

/etc/httpd/modules
/usr/lib64/httpd/modules
  主程序文件:

/usr/sbin/httpd
/usr/sbin/httpd.work
/usr/sbin/httpd.even
  主进程文件:

/etc/httpd/run/httpd
  日志文件目录:

/var/log/httpd
access_log: 访问日志
error_log:错误日志
  配置文件:

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
  检查配置语法:

httpd –t
service httpd configtest
  配置格式

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

DocumentRoot "/var/www/html"
  Apache HTTP 服务器 2.2 文档
  http://httpd.apache.org/docs/2.2/
  查看静态编译的模块

httpd -l
   查看静态编译及动态装载的模块

httpd -M
   动态模块加载:不需重启即生效
   动态模块路径
  /usr/lib64/httpd/modules/

Httpd 2.2常见配置

显示服务器版本信息

默认:
ServerTokens OS
curl -I localhost

可选值
效果




Major
Server: Apache/2


Minor
Server: Apache/2.2


Min[imal]
Server: Apache/2.2.15 (CentOS) DAV/2


Min
Server: Apache/2.2.15


Prod
Server: Apache


OS
Server: Apache/2.2.15 (CentOS)


Full
Server: Apache/2.2.15 (CentOS) DAV/2

修改监听的IP和Port

Listen [IP:]PORT
(1) 省略IP表示为本机所有IP
(2) Listen指令至少一个,可重复出现多次
默认:
Listen 80
修改指定IP会,必须重启服务才能生效,reload是不能生效。
定义服务器名称

默认未开启
ServerName hunk.tech:80
如果没有DNS解析,这里可以设置为IP地址。一般建议使用站点对外发布的FQDN名称。
KeepAlive持久连接
  Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭
  断开条件:数量限制:100
  时间限制:以秒为单位, httpd-2.4 支持毫秒级
  副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应
  折衷:使用较短的持久连接时间
  设置:

默认
KeepAlive Off
KeepAliveTimeout 15
MaxKeepAliveRequests 100
MPM( Multi-Processing Module)多路处理模块
  prefork, worker, event(2.2试验阶段,不建议使用)
  要求更高伸缩性的站点可以选择使用线程的 MPM,即 worker 或 event; 需要可靠性或者与旧软件兼容的站点可以使用 prefork。
  httpd-2.2不支持同时编译多个模块,所以只能编译时选定一个;rpm安装的包提供三个二进制程序文件,分别用于实现对不同MPM机制的支持
  确认方法:

ps aux | grep httpd
默认为/usr/sbin/httpd, 即prefork模式
/usr/sbin/httpd.worker 默认为/usr/sbin/worker,
修改为worker模式
/etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker
另外,/etc/httpd/conf/httpd.conf中以下模块配置与此相关

  httpd-2.4 MPM模式修改在以下文件

/etc/httpd/conf.modules.d/00-mpm.conf
  prefork的默认配置:


StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256 最多进程数,最大20000  。ulimit值会同时限制此项设置
MaxClients 256 最大并发
MaxRequestsPerChild 4000 子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远
不释放)

  worker的默认配置:


StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0 无限制

定义网站目录

默认
DocumentRoot "/var/www/html"
记得修改目录的属主与权限
此项修改只需要reload即可
定义默认搜索页面

默认
DirectoryIndex index.html index.html.var
从左至右顺序查找
定义启动httpd服务的账户与组

默认
User apache
Group apache
站点访问控制类型

目录

s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
最后的单词就是定义的格式名称,给其他语句块调用的
使用日志格式

CustomLog logs/access_log combine
%h 客户端IP地址
%l 远程用户,启用mod_ident才有效,通常为减号“-”
%u 验证(basic,digest)远程用户,非登录访问时,为一个减号“-”
%t 服务器收到请求时的时间
%r First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本
%>s 响应状态码
%b 响应报文的大小,单位是字节;不包括响应报文http首部
%{Referer}i 请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的
%{User-Agent}i 请求报文中首部“User-Agent”的值;即发出请求的应用程序
更多的格式说明:
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
设定默认字符集

默认
AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030
定义路径别名

语法:
alias /URL /本地磁盘实际路径/
未定义别名前
#curl 192.168.5.102/books/
wwww/books/index.html
定义别名后
alias /books /app/www2/
#curl 192.168.5.102/books/
wwww2/index.html
正则表达式 语法:
aliasmatch 正则表达式 "实际访问路径"
aliasmatch ^/books/(.*)? /app/www2/new$1  > $1表示的是前面( )内匹配的内容
aliasmatch ^.*/(.*\.(jpe?g|gif|png|bmp))$ "/app/www2/imgs/$1"    > 自动将访问的图片目录跳转
#curl 192.168.5.102/books/index.html -lv
* Connected to 192.168.5.102 (192.168.5.102) port 80 (#0)
> GET /books/index.html HTTP/1.1
看,确实跳转到了新的文件名
wwww2/newindex.html
* Closing connection 0

实现用户家目录的http共享
  基于模块mod_userdir.so实现

主配置文件中启用
LoadModule userdir_module modules/mod_userdir.so
#httpd -M|grep userdir
userdir_module (shared)
Syntax OK
语法:

UserDir 共享的目录      > 注意,这里的目录指的是系统账号家目录中的子目录。如:/home/hunk/userdir


  注意事项:

如果配置文件语句是写在/etc/httpd/conf.d/目录下的话,需要将主配置文件中以下行注释掉。
#    UserDir disabled
  示例:


UserDir userhome

#tree /home/hunk
/home/hunk
└── userhome
└── index.html
注意添加httpd服务账户访问权限   
#setfacl -m u:apache:x /home/hunk/  
#curl 192.168.5.102/~hunk/index.html
/home/hunk/userhome
ServerSignature错误信息显示

默认 on
当客户请求的网页并不存在时,服务器将产生错误文档,错误文档的最后一行将包含服务器的名字、 Apache的版本等信息
如果不对外显示这些信息,就可以将这个参数设置为Off
设置为Email,将显示ServerAdmin 的Email提示
可选值:On | Off | EMail
on 的显示:
#links http://192.168.5.102/a.html
404 Not Found
Not Found                                                                       
The requested URL /a.html was not found on this server.                                                                                            
════════════════════════════════════════════════════════
Apache Server at 192.168.5.102 Port 80
off 的显示
#links http://192.168.5.102/a.html
404 Not Found
Not Found                                                                       
The requested URL /a.html was not found on this server.

ServerType 服务器运行模式

standalone 独立服务模式
inetd 非独立服务模式
只适用于Unix平台
status页面
  基于模块LoadModule status_module modules/mod_status.so实现
  注意控制允许访问的用户


SetHandler server-status

ExtendedStatus On 开启扩展信息,这一条不能写入具体的配置块里面,在配置文件里加下即可。
DSC0000.png


ServerName 绑定名称

ServerName hunk.tech
如果不绑定一个名称,启动服务时会有提示警告。实际并不影响正常启动服务。
ServerAlias 绑定多个域名

ServerAlias web.hunk.tech shop.hunk.tech > 多个域名,用空格隔开
只能通过指定的名称访问
VirtualHost 虚拟主机
  所谓虚拟主机是指在一台服务器里运行几个网站,提供WEB、FTP等服务。
  注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先注释主配置文件中的以下选项

DocumentRoot
Listen
  在使用虚拟主机的时候,建议不要在主配置文件中配置,为了管理上更加清晰,可以独立在/etc/httpd/conf.d目录下以虚拟主机站点名进行区分,如:

#tree ../conf.d
../conf.d
├── basic.conf
├── README
├── user.conf
├── www2.hunk.tech.conf
├── www3.hunk.tech.conf
└── www.hunk.tech.conf
  有三种实现虚拟主机方案:
  记得先把主配置中的Listen注释掉,在每个虚拟主机配置文件独立指定。

基于ip
  为每个虚拟主机准备至少一个ip地址
  应用场景:多用于内部网络

Listen 80
         > 定义了以主机IP为访问方法
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /app/www/virtuahost/www.hunk.tech
ServerName www.hunk.tech
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common

基于端口port
  为每个虚拟主机使用至少一个独立的端口port
  应用场景:多用于内部网络

Listen 80
Listen 8080
        
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /app/www/virtuahost/www.hunk.tech
ServerName www.hunk.tech
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common


ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /app/www/virtuahost/www2.hunk.tech
ServerName www2.hunk.tech
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common

IP相同,但端口不同
IP不同,但端口均为默认端口
基于FQDN
  为每个虚拟主机使用至少一个FQDN
  应用场景:多用于公网,生产环境

NameVirtualHost *:80   > 这一行在2.2版本是必须添加的。2.4之后的版本,官方则去掉了这一个选项,但是功能是相同的。

ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /app/www/virtuahost/www3.hunk.tech
ServerName www.hunk.tech
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common

区分在于 请求报文中首部
  配置了3个虚拟主机之后,可以看到监听的端口号也变了

#ss -nlt
State      Recv-Q Send-Q                                           Local Address:Port                                             Peer Address:Port
LISTEN     0      128                                                         :::8080                                                       :::*     
LISTEN     0      128                                                         :::80                                                         :::*     
LISTEN     0      128                                                         :::8081
访问各自己的站点也是正常的
#curl 192.168.5.102
www.hunk.tech
#curl 192.168.5.102:8080
www2.hunk.tech
#curl 6-web-1.hunk.tech:8081
www3.hunk.tech

  基于FQDN的模式配置示例:
  注意,必须在主配置文件中设置以下2项,这个与上面的其他模式有些不同。

NameVirtualHost *:80
Listen 80
#cat /etc/httpd/conf.d/www*
站点1:

DocumentRoot /app/www/virtuahost/www2.hunk.tech
ServerName www2.hunk.tech   > 这里设置通过网络访问的FQDN

站点2:

DocumentRoot /app/www/virtuahost/www3.hunk.tech
ServerName www3.hunk.tech   > 这里设置通过网络访问的FQDN

站点3:

DocumentRoot /app/www/virtuahost/www.hunk.tech
ServerName www.hunk.tech    > 这里设置通过网络访问的FQDN


  在充当测试客户机的主机上设置/etc/hosts

192.168.7.201 www.hunk.tech www2.hunk.tech www3.hunk.tech
  可以实现通过不同的域名分别对应不同的虚拟主机。很多共享主机提供商用的就是这些技术啦。

#curl www.hunk.tech
www.hunk.tech
#curl www2.hunk.tech
www2.hunk.tech
#curl www3.hunk.tech
www3.hunk.tech

仅允许通过域名访问站点,禁止使用IP方式访问的实现
  方法1:

#vim denyip-www.hunk.tech.conf
      > 指定IP
ServerName 192.168.7.201        > 绑定访问方式

order deny,allow
deny from all                 > 拒绝所有


#curl 192.168.7.201
403 Forbidden
You don't have permission to access / on this server

  方法2:

建一个首页文件,如index.hmtl,首面文件内容可以是一个声明不允许以IP访问,如果想更友好点,可以设置跳转。
#echo 'deny from ip ' > empty/index.html
#curl 192.168.7.201
deny from ip
压缩页面
  基于模块实现

LoadModule deflate_module modules/mod_deflate.so
  优点:节约带宽
  缺点:消耗CPU资源;有些浏览器并不支持;并不是所有文件都会有明显的压缩效果
  语法选项

设置在server模块中
启用压缩功能
SetOutputFilter DEFLATE
定义压缩比
DeflateCompressionLevel 9         > 1-9 最高9
定义压缩文件类型
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
Https
  SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机
  实现过程

#yum install mod_ssl
会在/etc/httpd/conf.d生成一个子配置文件ssl.conf
将创建好的私钥和证书文件放到一个目录里
编辑/etc/httpd/conf.d/ssl.conf,把以下内容按需修改,其他不要动。

ServerName www.hunk.tech:443
SSLCertificateFile /etc/httpd/conf.d/ssl/http.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/http.key


SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem  > CA的证书文件
  只有以上这一行启用后,才会在客户端显示出完成的证书路径
DSC0001.png


http重定向
  语法:

Redirect termanent|temp URL-path URL
Permanent:永久重定向301
temp:永久重定向302
写在配置文件中
redirect temp / http://www.baidu.com
redirect permanent / http://www.baidu.com
#curl -I www.hunk.tech
HTTP/1.1 302 Found
Location: https://www.hunk.tech
#curl -I www.hunk.tech
HTTP/1.1 301 Moved Permanently
Location: https://www.hunk.tech
RewriteRule
  基于模块

LoadModule rewrite_module modules/mod_rewrite.so
  需要在配置文件中启用,如果使用了虚拟主机,则配置在对应的虚拟主机server块内

RewriteEngine on
RewriteRule 规则 [redirect=301重定向状态码]
  将http重定向到https

RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]
HSTS
  HTTP Strict Transport Security

服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,
会将所有HTTP访问请求在内部做307跳转到HTTPS。而无需任何网络过程
  需要在配置文件中启用,如果使用了虚拟主机,则配置在对应的虚拟主机server块内

RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]
header always set Strict-Transport-Security: "max-age=3600"
#curl -ILk www.hunk.tech/index.html
HTTP/1.1 302 Found
Strict-Transport-Security: max-age=3600   > 这里
Location: https://www.hunk.tech/index.html
相关http的其他工具

rotatelogs:日志滚动工具

httpd的压力测试工具

 ab, webbench, http_load, seige
 Jmeter 开源
 Loadrunner 商业,有相关认证
 tcpcopy:网易,复制生产环境中的真实请求,并将之保存
ab [OPTIONS] URL
来自httpd-tools包
-n:总请求数
-c:模拟的并行数
-k:以持久连接模式测试
#ab -n 1000 -c 1000 www.hunk.tech/index.html
  ulimit –n 数字(默认1024) 调整能打开的文件数




运维网声明 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-636317-1-1.html 上篇帖子: mariadb和apache安装 下篇帖子: Apache(httpd)源码包安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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