http2.4简单配置
前言:
上一篇博文说到了http的发展以及http完整请求响应的工作流程。
一、开篇:
从最简单的静态服务器开始。
之前说过,http是应用层协议,必定会在用户空间体现出具体的应用程序。常见的http服务器:
httpd(apache)
nginx
lighttpd
以上皆是静态服务器,除此之外还有一些能够处理动态网页的应用程序服务器:
IIS
tomcat,jetty,jboss
自然,这里所讲述的仅仅是盛名已久的apache。
蛮荒时代之时在NCSA(美国计算机安全协会)号召聚集众多工程师开发了一款能够提供完整服务的web软件,后来项目完成之后,众工程师去往各大IT公司。但是,由于对此项目还是怀有情怀,于是自发发起维护其项目,不断且无偿的为其更新补丁,所以此服务也被称为a patchy server,简称apache,其意为充满补丁的服务器。
同时,也就是期间的无意之举,造就了apache的诞生。
在此事后两年,apache上线且迅速得取缔的旧版本,并且占据了约百分之五十的份额,形成自然垄断,既然是天赐良机,为何不把握机会,所以apache基金会成立。现今,在美国apache有三种含义,一层为阿帕奇族,二层为阿帕奇武装直升机,三层为阿帕奇软件基金会。
二、特性:
http的特性:
高度模块化特性:core+modules
DSO(Dynamic Shared Object)
多路处理模块(MPM)
prefork:多进程模型,每个进程响应一个请求。一个主进程,负责生成n个子进程,子进程为工作进程,每个子进程处理一个用户请求,如果没有用户请求,也会生成空闲进程,随时等待请求到达,最大不会超过1024个。主进程只负责接受请求,随后将请求交给子进程,由子进程处理请求,最后再由主进程响应客户端
worker:多进程多线程,一个进程生成多个线程,一个线程响应一个请求
event:事件驱动模型,一个进程生成多个线程,一个线程响应多个请求,最多能够响应(n*m)个请求。在worker模型下添加了一个事件驱动机制,让其能够同时响应多个请求
虚拟主机
负载均衡
路径别名
用户认证
basic认证
digest认证
支持第三方模块
三、配置
http2.4配置:
默认工作目录在/etc/http下
主配置文件/etc/http/conf/http.conf
包括配置文件/etc/http/conf.d/*.conf
日志记录文件:
/var/log/http
access_log 访问日志
error_log 错误日志
模块目录:
/etc/httpd/conf.modules.d/*.conf
站点文档目录:
/var/www/html
主配置文件/etc/http/conf/http.conf配置
(1)修改监听地址
Listen 【ip】:PORT
~]# vim /etc/httpd/conf/httpd.conf
Listen 80
(2)持久连接
~]# vim /etc/httpd/conf/httpd.conf #或者/etc/httpd.d/*.conf
KeepAlive on|off #开启长连接之后,每个资源请求接受后不会断开tcp连接,而是继续请求资源,直至访问控制极限或者客户端主动断开连接。注:可通过telnet验证、测试是否开启telnet
MaxKeepAliveRequests 100 #数量控制,当请求资源到达100个之后,服务器端会自动断开tcp连接,重新进行tcp连接
KeepAliveTimeout 15 #时间控制,当用户请求资源后15s之后无动作,服务器自动断开tcp连接
(3)MPM
~]# vim /etc/httpd/conf.modules.d/00-mpm.conf #注:在apache2.2上有单独的主配置文件/usr/sbin/httpd能够在其中修改需要的MPM模块,但仅限于rpm包安装的,因为apache2.2并不支持编译多个MPM模块
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
~]# httpd -l #查看静态编译的模块
Compiled in modules:
core.c
mod_so.c
http_core.c
~]# httpd -M #查看所有编译的模块,包含静态模块
~]# vim /etc/httpd/conf.d/prefork.conf #prefork简单配置,apache2.4使用高度模块化的配置方式,所有的需要的MPM模型的配置文件,需手动建立。不同的工作模式,只需要激活不同的配置文件即可
<IfModule mpm_prefork_module>
StartServers 8 #初始启动的进程数
MinSpareServers 5 #最小空闲进程数
MaxSpareServers 20 #最大空闲进程数
ServerLimit 256 #最大进程数
MaxClients 256 #最大并发请求数
MaxRequstsPerChild 4000 #单个进程最大响应请求次数
</IfModule>
~]# vim /etc/httpd/conf.d/worker.conf
<IfModule mpm_worker_module>
StartServers 2 #初始启动的进程数
MaxClients 300 #线程接受的最大请求数
MinSpareThreads 25 #最小线程数
MaxSpareThreads 100 #最大线程数
ThreadsPerChild 25 #每个进程能产生的线程数
MaxRequestPerChild 0 #每个线程响应的最大请求次数 0表示不做限制
</IfModule>
~]# vim /etc/httpd/conf.d/event.conf #event和worker的工作模式十分的相似,前者是在后者的基础上进行的改进,加入了事件通知机制。
<IfModule mpm_event_module>
StartServers 2 #初始启动的进程数
MaxClients 300 #线程接受的最大请求数
MinSpareThreads 25 #最小线程数
MaxSpareThreads 100 #最大线程数
ThreadsPerChild 25 #每个进程能产生的线程数
MaxRequestPerChild 0 #每个线程响应的最大请求次数 0表示不做限制
</IfModule>
(4)DSO
~]# vim /etc/httpd/conf.modules.d/00-base.conf #动态加载模块十分简单,只需手动编辑文件,取消或加上#注释即可。当然,之后得重启或重读配置文件
#LoadModule rewrite_module modules/mod_rewrite.so
~]# systemctl reload httpd.service
(5)定义server文档页面路径
~]# vim /etc/httpd/conf/httpd.conf #指向的路径是URL路径的起始位置,比如要访问test/index.html,则URL路径为www.xxyy.com/test/index.html
DocumentRoot "/var/www/html"
(6)站点访问控制
~]# vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html"> #以下仅仅只是在目录下的访问控制,还有基于Location的控制,形似此方式
<RequireAll>
#Require all granted #允许所有用户访问
#Require all denied #拒绝所有用户访问
Require ip 127.0.0.1 #允许某ip访问
Require not ip 192.168.0.0 #拒绝某ip访问
<RequireAll
</Directory>
(7)主页特性选项
<Directory "/var/www/html">
Options
Indexes #索引,将所有超链接显现出来,一般做下载站点时使用
FollowSymlinks #允许跟随符号连接访问非目录下的文件
SymLinksfOwnerMatch #允许跟踪符号链接,但必须相同属主属组
ExecCGI #允许运行CGI脚本
MultViews #内容协商机制,根据客户端语言打开不同的语言的页面
AllowOverride None #是否允许子目录单独设置访问控制,在每个目录下生成一个.htaccess文件,在里面定义其访问权限。当用户访问时单独通过.htaccess来访问控制
DirectoryIndex index.html index.html.var #设定默认页面
</Directory>
<IfModule dir_moudle>
DirectoryIndex index.html
</IfModule> #设定默认页面
(8)日志设定
~]# vim /etc/httpd/conf/httpd.conf
Errorlog "logs/error_log" #错误日志存放位置
LogLevel warn #大于或等于该级别才会记录
debug,info,notice,warn,error,crit,alert,emerg
(9)路径别名
~]# vim /etc/httpd/conf/httpd.conf
<IfModule alias_module>
Alias /bbs “/bbs/bbc” #能够将所有访问bbs目录下的所有用户,重定向到bbs/bbc目录下
<IfModule>
(10)设置字符集
~]# vim /etc/httpd/conf/httpd.conf
AddDefaultCharset UTF-8 #设置默认字符集
(11)安全域认证
<Directory “”>
Options None
AllowOverride None
AuthType Basic #认证方式
AuthName “” #安全域名
AuthUserFile “/PATH/TO/HTTP_USER_PASSWD_FILE” #认证文件存放路径,可以使用htpasswd创建认证文件,第一次使用-c,-m选项能够手动建立文件和md5加密方式,第二次无需使用-c选项。
Require user username1 ... #Require valid-user 允许表单上所有的用户访问
</Directory>
(12)虚拟主机
~]# vim /etc/httpd/conf.d/vhost.conf
<Directory "/vhosts"> #在apache2.4上,需要自己添加上该目录的选项,否则用户会出现访问权限不足
Require all granted
</Directory>
<VirtualHost 192.168.139.100> #虚拟主机监听的套接字,需要注意的是,一般使用虚拟主机建议注释掉中心主机的DocumentRoot
ServerName www.xxyy.com #主机名,此处是随意,若不是需要基于主机名间通信,此处随意。
DocumentRoot "/vhosts/web1/htdocs" #虚拟主机URL的起始目录
<Directory "/vhosts/web1/htdocs”> #apache2.4上必须明确规定权限,默认权限是拒绝访问的
AllowOverride None
<RequireAny>
Require all granted
</RequireAny>
</Directory>
(13)内置staus
<Location /server-status> #仅仅是基于Location管理,任意主机都可以使用status页面,能清楚的观察到httpd的运行状态。但是这页面十分危险,通常都只会设定本机能够访问。
SetHandler server-status
Require ip 192.168.139.1
</Location>
http2.4简单配置的更多相关文章
- 小丁带你走进git世界一-git简单配置
小丁带你走进git世界一-git简单配置 1.github的简单配置 配置提交代码的信息,例如是谁提交的代码之类的. git config –global user.name BattleHeaer ...
- 以实际的WebGIS例子探讨Nginx的简单配置
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 以实际项目中的一个例子来详细讲解Nginx中的一般配置,其中涉 ...
- CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置
1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...
- ssm简单配置
MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架. MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获. MyBatis 只使用简单的XML 和注解来配置和映射 ...
- 安装MariaDB和简单配置
1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB systemctl start maria ...
- BIND的进程一:DNS简单配置与的主从配置
DNS的简单配置和DNS的主从配置 摘要:DNS(Domain-Name Server) ,DNS的服务起到的作用就是名称解析,在网络通讯来说计算机与计算机是通过IP地址相互通信的, 当是IP地址 ...
- 转-squid介绍及其简单配置
本文原始出处:http://linuxme.blog.51cto.com/1850814/372960 1.Squid是什么? Squid中文权威指南:http://zyan.cc/book/squi ...
- Linux中vim的简单配置
本文主要分享Linux中vim的简单配置 ★配置文件的位置 在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...
- CCNA网络工程师学习进程(6)vlan相关协议的配置与路由器简单配置介绍
前面已经介绍了大部分与vlan技术相关的交换机的协议的配置,更深层次的还有STP协议和以太网端口聚合技术,接着还会简单介绍一下路由器的基本应用. (1)STP(Spanning-tre ...
随机推荐
- java中重载变长参数方法
一.测试代码 package com.demo; public class Interview { public static void test(int i){ System.out.println ...
- 【特效】页面滚动到相应位置运行css3动画
请到我的个人博客网站上浏览此文章,欢迎评论和建议. 文章链接:http://www.xiaoxianworld.com/archives/87 现在css3动画很常见了,实际项目中经常应用,特别是那种 ...
- 【转载】jQuery全屏滚动插件fullPage.js
文章转载自dowebok http://www.dowebok.com/ 原文链接:http://www.dowebok.com/77.html 简介 如今我们经常能见到全屏网站,尤其是国外网站.这些 ...
- 浅谈python 复制(深拷贝,浅拷贝)
博客参考:点击这里 python中对象的复制以及浅拷贝,深拷贝是存在差异的,这儿我们主要以可变变量来演示,不可变变量则不存在赋值/拷贝上的问题(下文会有解释),具体差异如下文所示 1.赋值: a=[1 ...
- 上传代码 CodePlex
博客园作为博客备份,博客会更新一份在博客园 CodePlex是微软开源项目网站,有很多人都在上面传代码,我们也可以上传自己的代码 注册 我们可以用微软账号注册,填写用户名.密码,很快就好. 新建项目 ...
- Python学习笔记(七)
Python学习笔记(七): 深浅拷贝 Set-集合 函数 1. 深浅拷贝 1. 浅拷贝-多层嵌套只拷贝第一层 a = [[1,2],3,4] b = a.copy() print(b) # 结果:[ ...
- Mysql Show ProcessList命令
每个MySql连接,或者叫线程,在任意一个给定的时间都有一个状态来标识正在进行的事情.可以使用 SHOW [FULL] PROCESSLIST 命令来查看哪些线程正在运行,及其查询状态,Command ...
- 脱壳第二讲,手动脱壳PECompact 2.x
脱壳第二讲,手动脱壳PECompact 2.x PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式 首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具 但是他有壳 ...
- JavaScript面向对象深入理解原型
原型模式 function Person(){ } Person.prototype.name="Ewarm"; Person.prototype.age="29&quo ...
- 有序线性表(存储结构数组)--Java实现
/*有序数组:主要是为了提高查找的效率 *查找:无序数组--顺序查找,有序数组--折半查找 *其中插入比无序数组慢 * */ public class MyOrderedArray { private ...