Centos 6 apache httpd 2.4 主要配置详解

实验环境:VMware Workstation Pro 14(试用版)
系统平台:
CentOS release 6.9 (Final) 内核 2.6.32-696.el6.x86_64
Server version: Apache/2.4.29 (Unix)

新特性

? MPM支持运行为DSO机制;以模块形式按需加载
? event MPM生产环境可用
? 异步读写机制
? 支持每模块及每目录的单独日志级别定义
? 每请求相关的专用配置
? 增强版的表达式分析式
? 毫秒级持久连接时长定义
? 基于FQDN的虚拟主机不需要NameVirutalHost指令
? 新指令,AllowOverrideList
? 支持用户自定义变量
? 更低的内存消耗
? 修改了一些配置机制
    不再支持使用Order, Deny, Allow来做基于IP的访问控制

? 新模块
    ? (1) mod_proxy_fcgi
    FastCGI Protocol backend for mod_proxy

    ? (2) mod_remoteip
    Replaces the apparent client remote IP address
    and hostname for the request with the IP address list
    presented by a proxies or a load balancer via the
    request headers.

    ? (3) mod_ratelimit
    Provides Bandwidth Rate Limiting for Clients

Apache HTTP 服务器 2.4 文档

http://httpd.apache.org/docs/2.2/

主程序文件:

/usr/sbin/httpd

rpm安装程序环境:

配置文件:

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf

模块相关的配置文件:

/etc/httpd/conf.modules.d/*.conf

systemd unit file:

/usr/lib/systemd/system/httpd.service

主程序文件:

/usr/sbin/httpd
httpd-2.4支持MPM的动态切换
mpm中的worker和even变为以模块方式进行加载了

日志文件:

/var/log/httpd
access_log:访问日志
error_log:错误日志

站点文档:
/var/www/html

模块文件路径:
/usr/lib64/httpd/modules

服务控制:
systemctl enable|disable httpd.service
systemctl {start|stop|restart|status} httpd.service

Httpd 2.4常见配置

定义网站目录

默认
DocumentRoot "/var/www/html"

目录需要明确授权才可以访问,这个与2.2版本差异比较大

<Directory "/app/www">      > 这里也是需要修改为对应的目录
    Require all granted
</Directory>

记得修改目录的属主与权限
此项修改只需要reload即可

切换使用的MPM

Centos 7
仅仅把需要使用的模式注释即可

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so   > 默认模式
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so

Centos 6
Include /etc/httpd24/extra/httpd-mpm.conf
LoadModule mpm_event_module
modules/mod_mpm_event.so
MPM工作模式

prefork:多进程I/O模型,每个进程响应一个请求,默认模型
一个主进程:生成和回收n个子进程,创建套接字,不响应请求
多个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024个

worker:复用的多进程I/O模型,多进程多线程,IIS使用此模型
一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n

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

基于IP的访问控制

无明确授权的目录,默认拒绝

任意目录下的页面只有显式授权才能被访问

允许所有主机访问:  Require all granted
拒绝所有主机访问:  Require all denied
允许指定:          Require ip IP地址
                    Require host 主机FQDN名称可整个域名之下的主机

拒绝指定:          Require not ip IP地址
                    Require not host 主机FQDN名称可整个域名之下的主机

语法:

允许所有,拒绝特定 (拒绝优先)
<RequireAll>                   > 关键语法
Require all granted            > 必须
Require not ip 192.168.5.102
</RequireALL>

拒绝所有,允许特定 (允许优先)
<RequireAny>                   > 关键语法
Require all denied             > 必须
Require ip 192.168.5.102
</RequireAny>

效果等同上一个配置
<Directory "/app/www">
    Require ip 192.168.5.102     > 仅允许特定IP
</Directory>

以下这种语法是错误的,因为默认的法则是拒绝,而这里却没有允许的特例
<Directory "/app/www">
    Require not ip 192.168.5.102
</Directory>

虚拟主机

基于FQDN的虚拟主机不再需要NameVirutalHost指令

<VirtualHost *:80>
    DocumentRoot /app/www
    ServerName www.hunk.tech
      <Directory "/app/www">       > 必须配置具体目录的访问授权
        Require all granted        > 允许所有
      </Directory>
</VirtualHost>

Sendfile机制

提升性能。 sendfile() 能减少切换次数而且还能减少拷贝次数

工作过程
 硬盘 >> kernel buffer (快速拷贝到kernel socket buffer) >> 协议栈
默认开
EnableSendfile on

启用代理

ProxyPass "/" "http://www.example.com/"         > 正向代理到后端服务器
ProxyPassReverse "/" "http://www.example.com/"  > 如果响应中有302重定向,ProxyPassReverse就派上用场

ProxyPass "/images" "http://www.example.com/"
ProxyPassReverse "/images" http://www.example.com/

客户端到服务器称之为正向代理,服务器到客户端就叫反向代理
示例:

<VirtualHost *:80>
    DocumentRoot /app/www
    ServerName www.hunk.tech
    proxypass "/" "http://192.168.5.102"
    ProxyPassReverse "/" "http://192.168.5.102"
      <Directory "/app/www">
        Require all granted
      </Directory>
</VirtualHost>

#curl  192.168.5.103
proxy from 192.168.5.103

原文地址:http://blog.51cto.com/191226139/2082790

时间: 2024-10-28 15:08:32

Centos 6 apache httpd 2.4 主要配置详解的相关文章

Centos 6 apache httpd 2.2 主要配置详解( 一 )

实验环境: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 主进

apache配置文件:http.conf配置详解

Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改.主站点的配置(基本配置) (1) 基本配置:ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置.其它指定的目录如果没有指定绝对路径,则目录是相对于该目录. PidFile logs/httpd.pid #第一个httpd进程(所有其他进程的父进程)的进程号文件位置. Liste

CentOS下LVS DR模式负载均衡配置详解

一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Master Director) 对外提供服务的VIP为192.168.1.180 192.168.1.114 LVS从调度器(Backup Director) 平时可以作为RS(真实服务器使用) 192.168.1.104 RS1(真实服务器)   192.168.1.103 RS2(真实服务器)  

CentOS 7 中httpd服务的用户限制详解

Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源.跨平台.功能模块haul.可灵活定制等诸多优点,其不仅性能稳定,在安全性方面的表现也十分出色. 为了更好的控制对网站资源的访问,可以为特定的网站目录添加访问授权.授权的方式有两种:客户机地址限制,用户授权限制.以下所有操作必须基于httpd服务的环境下,搭建httpd服务可以参考博文CentOS 7 利用Apache搭建Web网站服务 我们来详细了解如何实现web服务器对用户的限制 客户机地址限制 通过Requir

基于Cent OS7搭建apache网站后的访问控制配置详解

在一台centos7上搭建apache网站后,一般都是允许所有人访问的,那么可能会有一些特殊情况,需要对访问网站的人进行限制,出于这种情况,apache可以通过Require配置项,来对客户端进行一些访问限制,可以基于IP地址.网段.主机名或域名.使用名称"all"时表示任意地址. 安装apache服务的参考博文:https://blog.51cto.com/14154700/2391114 1.客户机地址限制: 限制策略的常用格式有下面几种: Require all granted:

基于CentOS 7.x搭建OpenVPN服务器与配置详解

一.服务器程序安装: 1.安装依赖程序: 因为OpenVPN软件包不在CentOS标准Yum源里,所以需要安装先通过yum安装epel源才能正常安装相关软件包! [[email protected]~]# yum install epel-release [[email protected]~]# yum -y install lzo lzo-devel [[email protected] ~]# rpm -qa | grep "lzo" lzo-devel-2.06-8.el7.x

Apache httpd.conf配置文件AllowOverride参数详解

AllowOverride从字面上解释是允许覆盖的意思,即Apache允许另一配置文件覆盖现有配置文件. 我们通常利用Apache的rewrite模块对URL进行重写,rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置. 从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override,即: < Directory /> AllowOverride No

CentOS Linux下VNC Server远程桌面配置详解

http://www.ha97.com/4634.html PS:偶以前基本不用Linux的远程图形桌面,前几天有开发的同事配置CentOS的vnc有问题,找我解决,就顺便记录总结一下,这个总结是比较完整的.下面的配置在CentOS5.x和6.x.SUSE企业版亲测验证,其他发行版按理也通用: 一.安装相应桌面环境与vnc服务端和客户端: # yum groupinstall "GNOME Desktop Environment"(CentOS 5.x安装GNOME桌面环境) # yu

(总结)CentOS Linux下VNC Server远程桌面配置详解

PS:偶以前基本不用Linux的远程图形桌面,前几天有开发的同事配置CentOS的vnc有问题,找我解决,就顺便记录总结一下,这个总结是比较完整的.下面的配置在CentOS5.x和6.x.SUSE企业版亲测验证,其他发行版按理也通用: 一.安装相应桌面环境与vnc服务端和客户端:# yum groupinstall "GNOME Desktop Environment"(CentOS 5.x安装GNOME桌面环境)# yum groupinstall "X Window Sy