http: 超文本传输协议,工作在应用层

CentOS 6程序环境:httpd-2.2
  配置文件:
    /etc/httpd/conf/httpd.conf
    /etc/httpd/conf.d/*.conf
  检查配置语法:
    httpd –t
    service httpd configtest

  服务脚本:/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

  主进程文件: /etc/httpd/run/httpd.pid

  日志文件目录:

    /var/log/httpd
    access_log: 访问日志
    error_log:错误日志
  帮助文档包:
    httpd-manual

  httpd配置文件的组成:
    grep "Section" /etc/httpd/conf/httpd.conf
      Section 1: Global Environment
      Section 2: 'Main' server configuration
      Section 3: Virtual Hosts
  配置格式:directive value         变量   值
    directive: 不区分字符大小写
    value: 为路径时,是否区分大小写,取决于文件系统

    

MPM工作模式:

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

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

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

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

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

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

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

/etc/sysconfig/httpd      MPM

  HTTPD=/usr/sbin/httpd.worker   取消该项以启用worker模式,查看该模式使用的模块httpd.worker -l

/etc/httpd/conf/httpd.conf

  ServerTokens prod       返回版本信息,prod仅显示apache,是显示最少信息的选项。

  Lister  80         默认监听本机所有IP地址,可以修改为某个IP的某个端口,可以指定监听多个IP端口  

  KeepAlive on|off      长连接开关,

  KeepAliveTimeout 15             长连接关闭时间,以秒为单位,httpd2.4支持毫秒,副作用:对并发访问量较大的服务器,持久连接功能会使有些请求得不到相应,处理方式是减短持久连接时间  

<IfModule prefork.c>   httpd默认模式的模块配置,httpd -l查看使用的模块
StartServers 8      初始子进程
MinSpareServers 5      空闲时最小子进程
MaxSpareServers 20        空闲时最大子进程
ServerLimit 256      服务器最高连接数
MaxClients 256      客户端最高连接数      应该与服务器连接数相等
MaxRequestsPerChild 4000    服务器进程服务的最大请求数,达到数量后终止进程,释放内存

<IfModule worker.c>    httpd.worker模式的模块配置,httpd.work -l 可以查看使用哪些模块
StartServers 4        初始子进程
MaxClients 300      支持的并发客户访问最大数量
MinSpareThreads 25   最小的空闲线程
MaxSpareThreads 75     最大的空闲线程
ThreadsPerChild 25     每个子进程线程数
MaxRequestsPerChild 0    服务器进程服务的最大请求数,达到数量后终止进程,重新打开新进程,0永远不释放

httpd -M 查看动态加载模块

  User apache      启动服务的用户
  Group apache    启动服务的组

DocumentRoot "/var/www/html"    修改服务路径,网页的存储位置

  <Directory "/var/www/html"> 

    设置文件夹属性,如果要下面的属性生效需要重命名welcome.conf,以使它失效,否则会自动转到noindex.html,无法显示文件列表

  1、Options Indexes FollowSymLinks

       Options:后跟1个或多个以空白字符分隔的选项列表

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

   常见选项:

    Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户

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

    None:全部禁用

    All: 全部允许

2、 AllowOverride

        与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令,该文件路径为访问数据路径下,默认为/var/www/html/下,和.html文件位置一致,需要手工创建

    只对<directory>语句有效        下列语句需要写在/etc/httpd/conf/httpd.conf/里相关的<directory>下以定义AllowOverride语句的生效范围

    AllowOverride All: .htaccess 中所有指令都有效

    AllowOverride None:.htaccess 文件无效

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

    3、order和allow、deny     ip访问控制

      放在directory, .htaccess中

      order:定义生效次序;写在后面的表示默认法则,如果冲突,排后面的生效

        Order allow,deny     默认没有记入白名单的都不准访问,下面要跟上允许访问的白名单,否则任何地址无法访问

        allow from  192.168.1.100

        Order deny,allow  默认没有记入黑名单的都可以访问,下面要跟上黑名单,否则任何地址都可以访问

      deny from 192.168.1.189

    例:      

<Files ~ "*\.txt$">
Order allow,deny
Deny from all
allow from 192.168.1.100,10.10.0.0

</Files>

日志设定

  日志类型:

      访问日志
      错误日志

      错误日志:

        ErrorLog logs/error_log

        LogLevel warn     可选值: debug, info, notice, warn,error,crit, alert, emerg

      访问日志:

LogFormat "%h %l %u %t \"%r\" %>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 combined    选择启用的日志格式combined,common,referer,agent

    帮助文档: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”的值;即从哪个页面中的超链接跳转至当前页面的

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

默认字符集

  AddDefaultCharset UTF-8    建议UTF-8,全球语言都可以支持,避免乱码

定义路径别名

  alias  /download/    /data/bbs/    别名自己定义,路径根据需要设置,可以放置在本配置文件任意位置

  aliasmatch ^/imgs/(.*)?$    "/data/images/pic$1"   支持扩展正则表达式

  aliasmatch ^(.*\.(jpe?g|gif|png))$  "/data/images/$1"

基于用户的访问控制

  认证方式两种:

    basic:明文

    digest:消息摘要认证,兼容性差

  定义安全域     一般创建在/etc/httpd/conf.d/下,

    <directory  "/app/website/secret/">     对某个文件夹进行限制

    AuthType Basic         选择认证方式

    AuthName "String“         提示

    AuthUserFile   "/etc/httpd/conf.d/.httpusers"      指定用户和密码的存放文件

    require user  http1 http2    指定可以访问的用户,require  valid-user为文件内所有用户皆可登陆

    </directory>

  提供账号和密码存储(文本文件)

    使用专用命令完成此类文件的创建及用户管理

    htpasswd  [options]   /etc/httpd/conf.d/.httpdusers   username      目录要和AuthUserFile一致

    -c:自动创建文件,仅第一次创建时使用,再次使用会覆盖

    -p:明文密码

    -d:CRYPT格式加密,默认

    -m:MD5格式加密

    -s:sha格式加密

    -D:删除指定用户

基于组账号进行认证             基于用户认证,需要用到用户账号密码文件

  定义安全域

      一般创建在/etc/httpd/conf.d/下,

    <directory  "/app/website/secret/">         对某个文件夹进行限制

    AuthType Basic         选择认证方式

    AuthName "String“         提示

    AuthUserFile   "/etc/httpd/conf.d/.httpusers"      指定用户和密码的存放文件,文件位置自己选择

    AuthGroupFile    "/etc/httpd/conf.d/.httpdgroups"   指定用户属于的组,文件位置自己选择

    require   group  admin

    </directory>

   创建用户账号和组账号文件

    vim /etc/httpd/conf.d/.httpdgroups

    admin:  http1  http2

      users:  http3  http4

远程客户端和用户验证的控制

  Satisfy ALL|Any

    ALL 客户机IP和用户验证都需要通过才可以

    Any客户机IP和用户验证,有一个满足即可

  示例:

    Require valid-user

    Order allow,deny

    Allow from 192.168.1

    Satisfy Any

实现用户家目录的http共享

  基于模块mod_userdir.so实现

  <IfModule mod_userdir.c>

  #  UserDir disabled             将此行注释

  UserDir  publicweb              该目录在用户家目录下,比如~wang/publicweb,并没有定义哪些用户的家目录,所以只要用户有这个目录,都可以申请访问,但是要有权限

  </IfModule>

  此时httpd的进程是apache运行的,apache没有其他家目录的访问权限

  setfacl -m u:apache:x /home/wang/       为apache添加进入wang的家目录的权限

ServerSignature On | Off | EMail

  当客户请求的网页并不存在时,服务器将产生错误文档,缺省情况下由于打开了 ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版本等信息如果不对外显示这些信息,就可以将这个参数设置为Off设置为Email,将显示ServerAdmin 的Email提示

status页面

  LoadModule status_module modules/mod_status.so     依赖的模块

  <Location /server-status>       访问该页面时自动显示网站状态信息,该文件名自定义,访问自动跳转

  SetHandler server-status     关键字,不可更改

  Order allow,deny               权限控制

  Allow from 172.16      仅允许172.16网段访问

  </Location>

  ExtendedStatus On     显示更详细的扩展信息

虚拟主机

  站点标识: socket

    IP相同,但端口不同

    IP不同,但端口均为默认端口

    FQDN不同:

      请求报文中首部

      Host: www.magedu.com

  有三种实现方案:

    基于ip:为每个虚拟主机准备至少一个ip地址  

    基于port:为每个虚拟主机使用至少一个独立的port

    基于FQDN:为每个虚拟主机使用至少一个FQDN

注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机

  禁用方法:注释中心主机的DocumentRoot指令即可  /etc/httpd/conf/httpd.conf

  虚拟主机的配置方法:    一般将配置文件建在/etc/httpd/conf.d/下

  vim /etc/httpd/conf.d/vhosts.conf

    根据IP配置

      <VirtualHost 192.168.1.101>     不同的虚拟主机需要定义不同的IP地址

      DocumentRoot “/app/website1"        网站文件路径

      Errorlog logs/website1-error_log    路径/var/log/httpd/,为每个网站定义单独的错误日志

      Customlog  logs/website1-access_log common    路径/var/log/httpd/,定义单独的日志,common为定义的日志模式

      </VirtualHost>

    根据端口

      <VirtualHost 192.168.1.101:90>

      DocumentRoot “/app/website2"

      Errorlog logs/website2-error_log 

      Errorlog logs/website2-error_log

      Customlog  logs/website1-access_log common

      </VirtualHost>

      listen 90          监听90端口,根据端口来区分主机,需要在配置文件下加上此行

    基于FQDN:为每个主机定义不同的FQDN

      namevirtualhost  *:80                  此项可以在主配置文件打开,或者在本文件中添加,2.4版本不需要

    <VirtualHost *:80>

      DocumentRoot “/app/website2"

      servername www.linux123.tech    域名需要注册

      serveralias   www.aa.com  www.aaa.com   需要域名支持

      Errorlog logs/website2-error_log 

      Errorlog logs/website2-error_log

      Customlog  logs/website1-access_log common

      </VirtualHost>  

      当通过IP访问网站,默认是放在第一位的网站回应,这个发生在使用FQDN区分的主机里

/etc/httpd/conf.d/welcome.conf

ErrorDocument 403 /error/noindex.html    在没有页面显示时,显示noindex.html,重命名welcome.conf,不再显示该页面,因为会透露版本信息

/etc/httpd/conf/httpd.conf

  DirectoryIndex index.html index.html.var   默认系统会在主站点找这两个文件,找到了就显示,找不到就显示noindex.html,如果修改了welcom.conf,则显示下图

ab命令 测试并发连接

ab -c 2000  -n 10000  http://192.168.1.101/test.txt

并发2000个连接,一共发送10000个,地址.....

使用mod_deflate模块压缩页面优化传输速度

使用mod_deflate模块压缩页面优化传输速度

适用场景:  

  (1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持

  (2) 压缩适于压缩的资源,例如文本文件

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

    LoadModule deflate_module modules/mod_deflate.so

    SetOutputFilter DEFLATE                     在需要压缩的网站下设置

    支持的格式

    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

  Level of compression (Highest 9 - Lowest 1)    压缩级别

  DeflateCompressionLevel 9     默认压缩级别9

    示例:

        <VirtualHost *:80>

      DocumentRoot “/app/website2"

      servername www.linux123.tech    域名需要注册

      serveralias   www.aa.com  www.aaa.com   需要域名支持

      Errorlog logs/website2-error_log 

      Errorlog logs/website2-error_log

      Customlog  logs/website1-access_log common

      SetOutputFilter DEFLATE                    

      AddOutputFilterByType DEFLATE text/plain

      AddOutputFilterByType DEFLATE text/html

      AddOutputFilterByType DEFLATE application/xhtml+xml

      AddOutputFilterByType DEFLATE text/xml

      AddOutputFilterByType DEFLATE application/xml

      </VirtualHost>  

http加密https

  安装加密模块

    yum install mod_ssl

  会自动生成一个配置文件/etc/httpd/conf.d/ssl.conf

  重启服务后生效

  加密只支持一个服务器,不支持多虚拟主机

   vim /etc/httpd/conf.d/ssl.conf

  ServerName www.Linux123.tech:443                    加密的网站name

  SSLEngine on                 加密引擎启用

  SSLCertificateFile /etc/pki/tls/certs/localhost.crt         CA颁发的证书文件

  SSLCertificateKeyFile /etc/pki/tls/private/localhost.key           web私钥key路径

  SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt               CA的证书文件

  http 重定向https

    vim /etc/httpd/conf.d/test.conf         新建conf文件

    redirect temp  /  https://www.baidu.com     临时跳转,当访问网页根目录时,跳转到百度

    redirect permanent / https://www.baidu.com   永久重定向

HSTS:HTTP Strict Transport Security

  HSTS跳转:设置后浏览器内部会自动跳转https协议

    通过模块rewrite_module 实现

    修改/etc/httpd/conf/httpd.conf

    或者在/etc/httpd/conf.d/下新建子配置文件

    vim  /etc/httpd/conf.d/rewrite.conf

    Header always set Strict-Transport-Security "max-age=31536000"    单位秒,持续时间

    RewriteEngine on

    RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]      302临时转发,301永久转发 ,HTTPD_HOST代表访问头部地址

http2.4差异

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

  设置站点文件夹时,需要明确授权,并且语法有差异

  documentroot "/app/website"

  <directory /app/website>

    Require all granted

  </directory>

  拒绝所有主机访问:Require all denied

  允许所有主机访问:Require all granted

  控制特定的IP访问:

    Require ip IPADDR:授权指定来源的IP访问

    Require not ip IPADDR:拒绝特定的IP访问

  <directory /app/website>

  <RequireAll>

  Require all granted

  Require not ip 172.16.1.1     拒绝特定IP   需要加入<RequireALL>

  </RequireAll>

  </directory>

  <RequireAny>
  Require all denied
  require ip 172.16.1.1      允许特定IP ,格式同上,上下需要<directory>和文件夹路径
  </RequireAny>

  控制特定的主机访问:

    Require host HOSTNAME:授权特定主机访问

    Require not host HOSTNAME:拒绝

    HOSTNAME:

      FQDN:特定主机

      domin.tld:指定域名下的所有主机

http2.2配置的更多相关文章

  1. nginx支持HTTP2的配置过程

    一.获取安装包 http://zlib.net/zlib-1.2.11.tar.gz https://www.openssl.org/source/openssl-1.0.2e.tar.gz (ope ...

  2. http2.4简单配置

    前言: 上一篇博文说到了http的发展以及http完整请求响应的工作流程. 一.开篇: 从最简单的静态服务器开始. 之前说过,http是应用层协议,必定会在用户空间体现出具体的应用程序.常见的http ...

  3. 为什么使用HTTP2?

    最近我们公司的官网由原来的http1.1已升级到http2,而我们前端开发对http2还是一片懵懂,更不知道为何换成了这个,故此补充了下http2的相关知识. http1.1相比于http1.0有哪些 ...

  4. 配置Nginx和Apache允许指定域名CORS跨域访问

    前后端分离开发,导致前端项目需要跨域请求后端接口,解决方法有很多,本文只介绍两个: 1. 修改后端程序代码实现允许跨域请求 2. 修改服务器配置文件实现允许跨域请求 正文: 方法1:修改后端程序代码实 ...

  5. Http2.0详解

    前言 HTTP/1.1协议为现在网络提供了20年的支持.从那时起,网站已经从静态的.文本驱动的文档发展为交互式的.富媒体的应用程序.在此期间底层协议保持不变这一事实正好说明了它的通用性和能力.但随着网 ...

  6. 使用nginx部署网站

    前面的话 如果服务器只需要放置一个网站程序,解析网站到服务器的网站,网站程序监听80端口就可以了.如果服务器有很多应用,借助nginx不仅可以实现端口的代理,还可以实现负载均衡.本文将详细介绍前端及n ...

  7. nginx 的 一些配置说明

    default 配置参考https://www.cnblogs.com/kuku0223/p/10740735.html 设置了default     除了指定的域名,  如果是没有配置的域名解析过来 ...

  8. 20191127 Spring Boot官方文档学习(9.1-9.3)

    9."使用方法"指南 9.1.Spring Boot应用程序 9.1.1.创建自己的FailureAnalyzer FailureAnalyzer被包装在FailureAnalys ...

  9. 私有化轻量级持续集成部署方案--02-Nginx网关服务

    提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 这一篇中使用 Nginx 部署网关中心,用来代理服务器中服务.网关中心有优点也有缺点,也可以不采用网关系统. 部署 ...

随机推荐

  1. MATLAB循环和函数定义,调用

    格式不要括号,最后有end for 循环变量 = 表达式1:表 2:表 3 表1:初值     表2:步长      表3:终值 求圆周率:π/4=1 - 1/3 + 1/5 -1/7+...+(-1 ...

  2. linux上的常用命令

    删除目录及文件 (删除tem目录和所有.xml文件) rm -rf tem/ *.xml 复制文件 cp zoo_sample.cfg zoo.cfg 两台机的目录相互拷贝 scp -r apps/ ...

  3. 硬盘的基础知识-SSD

    硬盘有三类:HDD(机械硬盘),SSD(固态硬盘),HHD(混合硬盘) 原理: HDD:磁性碟片 SSD: 闪存颗粒 HHD:磁性碟片的基础上加上了闪存颗粒. 这里对HDD,HHD不加说明,只对SSD ...

  4. 解决jQuery在chrome中获取height为0

    笔者之前在一家创业公司做过项目,当时遇到这么一个奇怪的问题,我需要用一个jQuery的height()方法获取一个div的高度,但是在chrome浏览器上面有时可以正常获取,但是同一个页面刷新多几次获 ...

  5. css3实现iPhone滑动解锁

    该效果的主要实现思路是给文字添加渐变的背景,然后对背景进行裁剪,按文字裁剪(目前只有webkit内核浏览器支持该属性),最后给背景添加动画,即改变背景的位置,背景动画效果如下(GIF录制时有卡顿,代码 ...

  6. 给大家推荐一个.Net的混淆防反编译工具ConfuserEx

    给大家推荐一个.Net的混淆防反编译工具ConfuserEx. 由于项目中要用到.Net的混淆防反编译工具. 在网上找了很多.Net混淆或混淆防反编译工具,如.NET Reactor.Dotfusca ...

  7. android selector中使用shape

    <shape> <!-- 实心 -->     <solid android:color="#ff9d77"/> <!-- 渐变 --&g ...

  8. 搭建日志环境并配置显示DDL语句

    现在一般用log4j用的比较多,用slf4j用的比较少,所有这里我们就不用 hibernate内置的slf4j了. 用到slf的接口,log4j的实现. 要在hibernate中使用log4j,如图所 ...

  9. 百度web应用诉讼费计算器

    以前百度推开放平台的时候,利用jquery+jqueryUI做了一个诉讼费计算器,托管在BAE上.闲来无事,把代码和大家共享一下. 在百度搜索"诉讼费"相关的关键词就能看到:   ...

  10. Mahara-16.10 (Ubuntu 16.04)

    平台: Ubuntu 类型: 虚拟机镜像 软件包: mahara-16.10 commercial education elearning mahara open source 服务优惠价: 按服务商 ...