HTTP的基础配置

目录:

1.修改监听的IP和PORT
2.持久连接(保持连接,长连接)
3.MPM
4.DSO
5.定义’Main’ server_name的文档页面路径
6.站点访问控制常见机制
7.定义站点主页面:
8.定义路径别名
9.设定默认字符集
10.日志设定
11.基于用户的访问控制
12.虚拟主机
13.status页面
14.curl/ab命令
15.使用mod_deflate模块压缩页面优化传输速度

1、修改监听的IP和PORT:

Listen [IP-address:]portnumber [protocol]
(1) 省略IP表示为0.0.0.0;
(2) Listen指令可重复出现多次;
        Listen 80
        Listen 8080
(3) 修改监听socket,重启服务进程方可生效;
(4) 限制其必须通过ssl通信时,protocol需要定义为https;

2、持久连接(保持连接,长连接):

Persistent Connection:tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源请求的进行;
如何断开?
    ·数量限制

    ·时间限制

副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常 响应;
折衷:使用较短的持久连接时长,以及较少的请求数量;
        KeepAlive On|Off
        KeepAliveTimeout 15
        MaxKeepAliveRequests 100

注意:httpd-2.4的KeepAliveTimeout可是毫秒级;

KeepAliveTimeout num[ms]

3、MPM:

httpd2.2版本
    ·查看静态编译的模块:
        # httpd -l
    ·查看静态编译及动态编译的模块:
        # httpd -M
    ·查看是否有其他MPM模块
        # httpd.worker -l
        # httpd.event -l
    修改MPM模块类型
        vim /etc/sysconfig/httpd
        HTTPD=/usr/sbin/httpd.{worker,event}

httpd2.4版本

    修改MPM模块类型

        vim /etc/httpd/conf.modules.d/00-mpm.conf

注意:重启服务进程方可生效
修改MPM属性:
vim /etc/httpd/conf/httpd.conf
prefork的配置
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
worker的配置:
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0

</IfModule>

4、DSO:

配置指定实现模块加载
httpd2.2,编辑vim /etc/httpd/conf/httpd.conf
    LoadModule <mod_name> <mod_path>
httpd2.4,编辑vim /etc/httpd/conf.modules.d/00-base.conf
    LoadModule <mod_name> <mod_path>
    模块文件路径可使用相对路径:
    相对于ServerRoot(默认/etc/httpd)

5、定义’Main’ server的文档页面路径:

ServerName
语法格式: ServerName [scheme://]fully-qualified-domain-name[:port]
DocumentRoot “”

6、站点访问控制常见机制:

httpd-2.2:
order和allow、deny
order:定义生效次序;写在后面的表示默认法则;
Allow from, Deny from
来源地址:
IP
NetAddr:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0


httpd-2.4:

基于IP控制:
<RequireAll>
Require ip IP地址或网络地址
Require not ip IP地址或网络地址
</RequireAll>
基于主机名控制:
Require host 主机名或域名
Require not host 主机名或域名
要放置于<RequireAll>配置块中或<RequireAny>配置块中;
Options:
后跟1个或多个以空白字符分隔的“选项”列表;
Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户;
FollowSymLinks:允许跟踪符号链接文件所指向的源文件;
None:
All:All options except for MultiViews.

7、定义站点主页面

DirectoryIndex index.html index.html.var

8、定义路径别名:

格式:
Alias /URL/ “/PATH/TO/SOMEDIR/”
示例:
Alias /download/ “/rpms/pub/”
http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm
/rpms/pub/bash-4.4.2-3.el6.x86_64.rpm

9、设定默认字符集:

AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030

10、日志设定:

日志类型:访问日志 和 错误日志
错误日志:
ErrorLog logs/error_log
LogLevel warn
#日志等级:Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
访问日志:
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
CustomLog logs/access_log combined
LogFormat format strings:
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
    %h:客户端IP地址;
    %l:Remote User, 通常为一个减号(“-”);
    %u:Remote user (from auth; may be bogus if return status (%s) is 401);非为登录访问时,其为一个减号;
    %t:服务器收到请求时的时间;
    %r:First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本;
    %>s:响应状态码;
    %b:响应报文的大小,单位是字节;不包括响应报文的http首部;
    %{Referer}i:请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的;
    %{User-Agent}i:请求报文中首部“User-Agent”的值;即发出请求的应用程序;

11、基于用户的访问控制

认证质询:
WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码;
认证:
Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源;
认证方式有两种:
basic:明文
digest:消息摘要认证
安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因;


basic认证配置示例:

(1) 定义安全域
<Directory “”>
Options None
AllowOverride None
AuthType Basic #开启认证
AuthName “String“ #认证提示文字
AuthUserFile “/PATH/TO/HTTPD_USER_PASSWD_FILE” #认证文件位置
Require user username1 username2 …
</Directory>
允许账号文件中的所有用户登录访问:
Require valid-user
(2) 生成提供账号和密码存储(文本文件)
使用专用命令完成此类文件的创建及用户管理


htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username

    -c:自动创建此处指定的文件,因此,仅应该在此文件不存在时使用;
    -m:md5格式加密
    -s: sha格式加密
    -D:删除指定用户
    -b:批模式添加用户
htpasswd -m [options] /PATH/TO/HTTPD_PASSWD_FILE username password
另外:基于组账号进行认证;
(1) 定义安全域
    <Directory “”>
    Options None
    AllowOverride None
    AuthType Basic
    AuthName “String“
    AuthUserFile “/PATH/TO/HTTPD_USER_PASSWD_FILE”
    AuthGroupFile “/PATH/TO/HTTPD_GROUP_FILE” #定义组用户文件位置
    Require group grpname1 grpname2 …
    </Directory>
(2) 创建用户账号和组账号文件;
    定义组用户文件
    vim /PATH/TO/HTTPD_GROUP_FILE
    组文件:每一行定义一个组
    GRP_NAME: username1 username2 …

12、虚拟主机

有三种实现方案:
·基于ip:
为每个虚拟主机准备至少一个ip地址;
·基于port:
为每个虚拟主机使用至少一个独立的port;
·基于FQDN:
为每个虚拟主机使用至少一个FQDN;
虚拟主机的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot “”
</VirtualHost>


基于IP的虚拟主机示例:

<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.7:80>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
基于端口的虚拟主机:
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.6:808>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.6:8080>
ServerName www.c.org
DocumentRoot “/www/c.org/htdocs”
</VirtualHost>


基于FQDN的虚拟主机:

<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.6:80>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
注意:如果是httpd-2.2,则使用基于FQDN的虚拟主机时,需要事先使用如下指令:
NameVirtualHost IP:PORT

13、status页面:

需要加上以下这一条
LoadModule status_module modules/mod_status.so
httpd-2.2
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 172.16
</Location>
httpd-2.4
<Location /server-status>
SetHandler server-status
<RequireAll>
Require ip 172.16
</RequireAll>
</Location>

14、curl,ab命令

curl
-A/–user-agent <string> #设置用户代理发送给服务器
–basic 3使用HTTP基本认证
–tcp-nodelay #使用TCP_NODELAY选项
-e/–referer <URL> #来源网址
–cacert <file> #CA证书 (SSL)
–compressed #要求返回是压缩的格式
-H/–header<line> #自定义首部信息传递给服务器
-I/–head #只显示响应报文首部信息
–limit-rate <rate> #设置传输速度
-u/–user <user[:password]>#设置服务器的用户和密码
-0/–http1.0 #使用HTTP 1.0
ab:
-n:总请求数;
-c:模拟的并行数;
-k:以持久连接模式 测试;

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

编辑vim /etc/http/conf.d/名字.conf,加入以下代码:
# 加入压缩模块
SetOutputFilter DEFLATE
# 限制对这些MIME类型的压缩
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
# 设置压缩等级
DeflateCompressionLevel 9

httpd反代proxy_fcgi:

示例:
    <VirtualHost *:80>
        ServerName www.b.net
        DocumentRoot /apps/vhosts/b.net
        DirectoryIndex index.php
        ProxyRequests Off
        ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
        <Directory “/apps/vhosts/b.net”>
            Options None
           AllowOverride None
            Require all granted
        </Directory>
    </VirtualHost>

原创文章,作者:z long,如若转载,请注明出处:http://www.178linux.com/84182

(0)
z longz long
上一篇 2017-08-08
下一篇 2017-08-08

相关推荐

  • LVM管理

    一、简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 LVM的工作原理是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对…

    Linux干货 2016-09-06
  • 马哥教育网络21期+第十周练习博客

    马哥教育网络21期+第十周练习博客 1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) CentOS启动流程:1,加电自检->Boot Sequence–>加载内核文件 BOOT Sequence中包含了MBR和GRUB     MBR:记录磁盘扇区,共512字…

    Linux干货 2016-09-19
  • LVM2:创建、使用、扩展、缩减、快照五步骤

    LVM2这是个关键的概念,还是从操作中比较容易理解 1、创建一个至少有两个PV组成的大小为40G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录 注意点:在vmware中添加两块硬盘,但是并不能马上可以查看,需要扫描一下磁盘,磁盘未/dev/sdc,/dev/sdd 然后创建LVM的基…

    Linux干货 2016-09-05
  • mariadb数据库的主从复制

    mariadb的主从复制

    2018-02-27
  • 博客开始的地方

    来北京挺长时间了,一直都在瞎忙,特别想找个地逛逛,约朋友一起去,结果人家只喜欢吃饭,逛街,来北京瞎逛过两次,第一次是面试路过潘家园,然后进去逛了半天,看各种各样的老古董,当然最多的还是手串,那种核桃,当然还是看到了好多好多有意思的东西,比如下面的小和尚和老和尚,小和尚光着头感觉特别可爱,老和尚还卖萌, 当然还有下面这个关老爷,他的肚子为什么被雕刻的那么大,难…

    2018-03-26
  • linux哲学思想

    有关运维,在哲学上的思想。 正确的哲学思想在我看来就是公理,就是像1+1=2一样大家都必须得遵守的公理。 当然,所有的公理都是有前提的,而有关linux的哲学思想当然是在linux环境这个大前提下。才是公理。在我看来,公理就是在学习知识之前所要依靠的准则,linux下的一切都在这些准则下。 比如: 一切接文件  linux下所有都是以文件的形式保存…

    2017-07-22