配置apache参数策略

  • 1. .htaccess
  • 2. options
    • 2.1 indexes选项
    • 2.2 FollowSymLinks
  • 3. 配置压缩策略
  • 4. mod_header模块
    • 4.1 header 指令
    • 4.2 RequestHeader 指令
  • 5. 设置缓存过期时间
    • 5.1 header模块set指令
    • 5.2 通过过期模块
  • 6. 配置压缩模块
    • 6.1 压缩过滤器deflate
  • 7. http跳转https
    • 7.1 https实现
    • 7.2 https优化
  • 8. 反向代理
    • 8.1 反向代理案列
    • 8.2 反向代理头部信息via字段
    • 8.3 反向代理中的X-Forwarded-*
  • 9. 重定向和别名
    • 9.1 别名
    • 9.2 重定向
  • 10. sendfile技术
    • 10.1 正常转发
    • 10.2 sendfile转发
  • 14. 工作模型
    • 14.1 prefork模型
    • 14.2 worker模型
  • 15. 最后apr软件包


1. .htaccess

此文件得放置在/var/www/html数据目录中
AllowOverride all 表示.htaccess文件中得配置都生效
AllowOverride None 表示.htaccess文件中得配置都不生效

2. options

2.1 indexes选项

此选项得前提是conf.d/welcome.conf得配置不存在,也就是说访问URL后,不会先跳转到错误页面,因此可以将此配置文件删除备份后,此选项才生效。

此选项就是运行目录中存在软连接,可以通过链接跟踪到文件,这样就方便我们通过软连接得方式发布内容

3. 配置压缩策略

加载deflate_module 模块

4. mod_header模块

4.1 header 指令

header可以针对头部信息进行添加控制信息

4.2 RequestHeader 指令

header可以针对请求头部添加相关控制信息

5. 设置缓存过期时间

5.1 header模块set指令

在header中通过set指令对响应报文头部进行修改,而header指令可以配置在server config, virtual host, directory, .htaccess这些地方
举例:虚拟主机配置如下


    ServerName www.b.com
    DocumentRoot "/data/www/b/"
    KeepAlive on
    KeepAliveTimeout 60
    MaxKeepAliveRequests 100
    header set cache-control "max-age=10000000"
    
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    

通过在其他主机测试:

[root@localhost ~]#curl -I www.b.com
HTTP/1.1 200 OK
Date: Sun, 03 Jun 2018 12:52:02 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Fri, 01 Jun 2018 16:23:54 GMT
ETag: "2d25-56d97029c47eb"
Accept-Ranges: bytes
Content-Length: 11557
cache-control: max-age=10000000
Content-Type: text/html; charset=UTF-8

5.2 通过过期模块


    ServerName www.b.com
    DocumentRoot "/data/www/b/"
    KeepAlive on
    KeepAliveTimeout 60
    MaxKeepAliveRequests 100
    
        # Enable expirations
        ExpiresActive On 
        # Default directive
        ExpiresDefault "access plus 1 month"
    
    
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    

通过测试可知:

[root@localhost ~]#curl -I www.b.com
HTTP/1.1 200 OK
Date: Sun, 03 Jun 2018 12:56:56 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Fri, 01 Jun 2018 16:23:54 GMT
ETag: "2d25-56d97029c47eb"
Accept-Ranges: bytes
Content-Length: 11557
Cache-Control: max-age=2592000
Expires: Tue, 03 Jul 2018 12:56:56 GMT
Content-Type: text/html; charset=UTF-8

6. 配置压缩模块

6.1 压缩过滤器deflate

mod_deflate模块,deflate[dɪˈfleɪt]压缩,缩紧,此模块提供了DEFLATE输出过滤器,允许服务器的输出在通过网络发送到客户端之前进行压缩。
举例:对压缩进行测试

[root@localhost b]#ll
total 312
-rw-r--r-- 1 root root     12 Jun  1 17:06 b.txt
-rw-r--r-- 1 root root  11557 Jun  2 00:23 index.html
-rwxrwxrwx 1 root root 294930 Jun  3 21:42 mess.html
-rw-r--r-- 1 root root     15 May 21 05:50 test
[root@localhost ~]#curl -I www.b.com/mess.html
HTTP/1.1 200 OK
Date: Sun, 03 Jun 2018 13:43:52 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Sun, 03 Jun 2018 13:42:17 GMT
ETag: "48012-56dbcfc4511d8"
Accept-Ranges: bytes
Content-Length: 294930  #发现并没有压缩
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8

配置压缩指令,注意压缩模块在默认情况下已经安装,可以通过httpd -M验证

AddOutputFilterByType DEFLATE text/html text/plain text/xml
DeflateCompressionLevel 9

通过google浏览器验证包头

Accept-Ranges: bytes
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 39160 #发现已经压缩294930/39160=7.5倍
Content-Type: text/html; charset=UTF-8
Date: Sun, 03 Jun 2018 13:53:02 GMT
ETag: "48012-56dbcfc4511d8-gzip"
Keep-Alive: timeout=60, max=100
Last-Modified: Sun, 03 Jun 2018 13:42:17 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Vary: Accept-Encoding

7. http跳转https

7.1 https实现

7.2 https优化

在默认情况下,浏览器往往每次都需要通过http请求,服务器返回https,再次通过https传输,如果在1分种内访问同样一个网站都需要跳转时,就会又多余得传输次数,因此通过在浏览器中将http到https保存一定时间,来优化http到https得实现。
HSTS:HTTP Strict Transport Security
服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将所有HTTP访问请求在内部做307跳转到HTTPS。而无需任何网络过程
HSTS preload list
是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表

Header always set Strict-Transport-Security "max-age=15768000"
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]

8. 反向代理

8.1 反向代理案列

反向代理也是应用层负载均衡,通常情况下在互联网企业等经常采用虚拟机主机在出口做应用层得负载均衡,在反向代理中会话保持是一个重头戏,得重点研究会话保持

<Proxy balancer://tcpsv>
    BalancerMember http://172.16.102.110:80 route=1
    BalancerMember http://172.16.102.111:80 route=2
    BalancerMember http://172.16.102.112:80 route=3
    ProxySet stickysession=ROUTEID
</Proxy>
<VirtualHost *:80>
    ServerName www.b.com
    DocumentRoot "/data/www/b/"
    KeepAlive on
    KeepAliveTimeout 60
    MaxKeepAliveRequests 100
    DeflateMemLevel 9
    header set cache-control "max-age=10000000"
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    ProxyVia On
    ProxyPass / balancer://tcpsv/
    ProxyPassReverse / balancer://tcpsv/
    <Directory "/data/www/b">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

8.2 反向代理头部信息via字段

在apache2.4中经过代理时,默认情况下头部信息via是不添加得,通过via字段可以得知是谁代理得,而且via字段是通用头部字段中的一个,关于这个字段在图解HTTP书的68和98页做了详尽的描述
开启此命令需要指令:

ProxyVia On

8.3 反向代理中的X-Forwarded-*

在反向代理中X-Forwarded-*是默认开启的,关于这个字段包含了三个内容,分别为:
X-Forwarded-for:主要是表明起始发起请求的主机IP地址
X-Forwarded-host:主要是代理发放那个host字段
X-Forwarded-Server:主要是由那个代理服务器转发的
当然这三项默认是开启的,因此就无需再次开启。

9. 重定向和别名

9.1 别名

别名是将当url进入主机后,在主机内部改写url访问到主机的另外一个资源路径,不会改变请求主机的请求时的url

9.2 重定向

重定向:客户端——>服务器一个请求url,服务器——>客户端一个新的url,客户端拿新的rul再次访问服务器。

10. sendfile技术

10.1 正常转发

httpd—调用内核—-读取磁盘—-将文件加载到内核所在的内存—–copy到httpd所在的内核所在的内存——copy到tcp协议栈所在的内存中,最后转发。

10.2 sendfile转发

httpd—调用内核—-读取磁盘—将文件加载到内核所在的内存—copy到tcp协议栈所在的内存中,最后转发

14. 工作模型

14.1 prefork模型

prefork模型下是采用进程来处理请求,即一个进程生成一个主线程,由主线程完成请求。
prefork默认配置如下:

StartServer 8            #默认开启8个进程
MinSpareServers 5        #最小空闲进程为5个
MaxSpareServers 20       #最大空闲进程为20个
ServerLimit 256          #最大进程数为256个
MaxClients 256           #最大处理客户端为256个
MaxRequestsPerChild 4000 #每个进程最大处理请求4000个

14.2 worker模型

worker模型是采用线程来处理请求
默认配置如下

StartServer 2         #默认开启2个进程
MaxClients  150       #最多同时处理150个请求
MinSpareThreads 25    #最小空闲线程25个
MaxSpareThreads 75    #最大空闲线程75个
ThreadsPerChild 25    #每个进程生成25个线程
MaxRequestPerChild 0  #每个进程相应0个请求,因为是线程来相应请求

15. 最后apr软件包

apr类似java得虚拟机一样得工作机制,在apache开发过程中为了加速开发,优先开发了一个apr系统,apr底层调用了windows和linux系统得接口同时向开发apache软件提供了另外一套开发接口,这样apache开发团队可以基于apr接口进行开发,避免了直接调用系统接口进行开发,能够加速开发效率。因此在rpm安装或者编译安装apache时前提是首先安装好apr,这样apache才能运行,在centos6上编译安装apache2.4时,需要更新apr软件包。

你可能感兴趣的:(linux)