Apache
事先创建进程
按需维持适当的进程
模块块设计,核心比较小,各种功能都模块添加(包括php)
支持运行配置,支持单独编译模块
支持多种方式的虚拟主机配置
        Socket IP:Port
        虚拟主机:
        基于IP的虚拟主机
       
基于端口的虚拟主机
        基于域名的虚拟主机(实际中最常见的方式)

那么虚拟机主机是如何根据域名来区别不同的访问内容的呢?
在URL和HTTP的请求报文中,报文首部中有一个Host字段,通过此字段来区别不同的访问内容
URL: protocol://HOST:PORT/path/to/source
HTTP请求报文语法
请求报文语法:

<method> <request-URL> <version>
资源获取方法 请求的资源是什么 对应请求资源协议的版本号
<headers>
http协议首部

<entity-body>
报文主体

例:
GET /download/linux.tar.bz2 HTTP/1.0
Host: www.qq.com

支持https协议 (mod_ssl)
支持用户认证
支持基于IP或主机名的ACL
支持每目录的访问控制
支持URL重写,/image/a.jpeg,
/bbs/images/abc.jpeg

Apache相关文件路径:
/usr/sbin/httpd(默认MPM:
prefork)
httpd: root, root (master process)
httpd: apche, apache (worker process)
/etc/rc.d/init.d/httpd
Port: (80/tcp), (ssl: 443/tcp)
/etc/httpd: 工作根目录,相当于程序安装目录
/etc/httpd/conf: 配置文件目录
主配置文件:httpd.conf
/etc/httpd/conf.d/*.conf 子配置文件,也是主配置文件的一部分
/etc/httpd/modules: 模块目录
/etc/httpd/logs --> /var/log/httpd: 日志目录
日志文件有两类:访问日志access_log,错误日志:err_log
/var/www/
html 静态页面
cgi-bin 动态页面

httpd指令:
directive value
指令不区分字符大小写
value则根据需要有可能要区分

MPM: Multi
Path Modules

mpm_winnt (针对windowsNT的)
prefork (一个请求用一个进程响应,稳定性好、但并发场景下消耗资源较多)
worker (一个请求用一个线程响应, (启动多个进程,每个进程生成多个线程))
event (一个进程处理多个请求,基于事件来实现)

URL路径跟本地文件系统路径不是一码事儿, URL是相对于DocumentRoot的路径而言的。

 

Apache主配置文件中的常见指令配置

Options
None: 不支持任何选项
Indexes: 允许索引目录
FollowSynLinks: 允许访问符号链接指向的原文件
SymLinksifOwnerMatch:如果属主匹配的话,允许访问符号链接指向的原文件
Includes: 允许执行服务端包含(SSI)
ExecCGI: 允许运行CGI脚本
MultiViews:多功能视图,能够根据客户端来源的语言和文字来判定该显示什么页面
All: 支持所有选项

AllowOverride:忽略Order关于访问控制的配置而采用另外的方式

AllowOverride AuthConfig
AuthType Basic 认证类型
AuthName "Restricted Files" 名字
AuthUserFile /usr/local/apache/passwd/passwords 认证用户时使用的文件
Require user marion 允许哪个/哪些用户可以登录

AllowOverride AuthConfig
AuthType Basic
AuthName "By Invitation Only"
# Optional line:
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups 认证组时使用的文件
Require group GroupName 允许哪个/哪些组可以登录

Require valid-user 在用户文件中的用户都可以访问

<Directory /www/docs/private>
AuthName "Private"
AuthType Basic
AuthBasicProvider dbm
AuthDBMUserFile /www/passwords/passwd.dbm
Require valid-user
</Directory>

创建认证用户文件时使用htpasswd命令:
htpasswd -c -m /etc/httpd/conf/htpasswd hadoop
文件路径 用户
-c 第一次创建此文件时才可以使用此参数,否则将会把原来的文件覆盖掉
-m 表示用户的密码进行md5加密
-D 删除某个用户
组文件直接编辑,语法为:
GroupName: rbowen dpitts sungo rshersey
组名:用户名1 用户名2

Order:用于定义基于主机的访问控制功能的,IP,网络地址或主机定义访问控制机制
Order allow,deny
allow from **
deny from **
注:Order之后allow和deny的先后顺序不同是有区别的,在后面的表示在没有明确规定是否能够访问时采用的默认动作

关于Apache中的Order denyallow的具体用法请参照:转-Apache的Order Allow,Deny 详解

地址的表示方式:
IP
network/netmask
HOSTNAME: www.a.com
DOMAINNAME: a.com
Partial IP: 172.16(等价于172.16.0.0/16)

例:
Order deny,allow
Deny from 192.168.0.0/24 (仅拒绝192.168.0.0/24网段的主机)

elinks:纯文本的浏览器
elinks http://172.16.100.1
-dump 把网页内容显示出来后立即退出,不再进入交互模式
-source 显示网页的源代码

PV: Page View  每天的页面访问量
UV: User View  每天的独立IP访问量

Apache虚拟主机
Apache:
中心主机
虚拟主机
        基于IP的虚拟主机
        IP1:80
        IP2:80
        基于端口的虚拟主机
        IP:80
        IP:8080
        基于域名的虚拟主机
        IP:80
        主机名不同
        www.magedu.com
        www.a.org
        www2.a.org
        www.b.net

注:在Apache
2.2
中要启用虚拟主机需要通过NameVirtualHost指令来实现

Apache虚拟主机的定义基本语法:
<VirtualHost HOST>
ServerName 虚拟主机名称
ServerAlias 虚拟主机别名
DocumentRoot /www/a.org/ 虚拟主机根目录,本地文件系统路径
<Directory "/www/a.org"> 定义一个Directory容器,对某个目录进行访问控制设置
Option 是否允许索引
AllowOverride
</Directory>
Alias 设置路径别名
ErrorLog 定义错误日志文件
CustomLog 定义访问日志文件

<Location "/images"> 针对的是DocumentRoot中的某个目录的访问控制设置
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from .foo.com
</Location>
ScriptAlias 脚本别名,允许执行CGI脚本的目录
</VirtualHost>

要启用虚拟主机,必须先取消中心主机(注释中心主机的DocumentRoot即可)
虚拟主机的定义:
<VirtualHost HOST>

</VirtualHost>

基于IPHOST的写法:
HOST
IP1:80
IP2:80

例:
<VirtualHost 192.168.133.128:80>
ServerName www.a.com
DocumentRoot "/var/www/a.com"
</VirtualHost>
<VirtualHost 192.168.133.129:80>
ServerName www.b.com
DocumentRoot "/var/www/b.com"
</VirtualHost>

基于端口时HOST的写法:
HOST
IP:80
IP:8080

例:
Listen 80
Listen 8080
<VirtualHost 192.168.133.128:80>
ServerName www.a.com
DocumentRoot "/var/www/a.com"
</VirtualHost>
<VirtualHost 192.168.133.128:8080>
ServerName www.c.com
DocumentRoot "/var/www/c.com"
</VirtualHost>

基于域名时HOST的写法:
*:80
ServerName不同
例:
NameVirtualHost 192.168.133.129:80
<VirtualHost 192.168.133.129:80>
ServerName www.b.com
DocumentRoot "/var/www/b.com"
</VirtualHost>
<VirtualHost 192.168.133.129:80>
ServerName www.d.com
DocumentRoot "/var/www/d.com"
</VirtualHost>

https的会话建立过程
客户端向对方支持https的服务端发起请求,首先Client端发起TCP/IP的三次握手,客户端和服务端进行加密算法的协商,协商之后服务端将自己的公钥信息(证书)发送给客户端,客户端验证证书没有发现问题之后就会生成一个对称秘钥,将对称秘钥发送给服务端,之后服务端就会将客户端请求的内容通过客户端发来的密码加密之后发送给客户端

配置:
1、保证Apache加载了mod_ssl模块
# yum install mod_ssl -y
重启Apache即可

2、创建自签证书
# cd /etc/pki/CA/
# (umask 077;openssl genrsa -out private/cakey.pem 2048)
秘钥不允许其他人来访问 生成rsa格式的私钥 私钥存储路径 指定是多少位的秘钥 
# vim /etc/pki/tls/openssl.cnf
[ req_distinguished_name ]
countryName_default = CN

stateOrProvinceName_default = Shannxi

localityName_default = xi'an

0.organizationName_default = xaut

organizationalUnitName_default = xaut
# cd /etc/pki/CA
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
# touch index.txt
# echo 01 > serial
# cd /etc/httpd/
# mkdir ssl
# cd ssl/
# (umask 077;openssl genrsa 1024 > httpd.key) 
# openssl req -new -key httpd.key -out httpd.csr
# openssl ca -in httpd.csr -out httpd.crt -days 3650
3、配置Apache

# vim /etc/httpd/conf.d/ssl.conf
<VirtualHost 192.168.133.128:443>
DocumentRoot "/var/www/a.com"
ServerName www.a.com

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log 对于ssl不再使用CustomLog,而是使用TransferLog
LogLevel warn

SSLEngine on 是否开启ssl功能
SSLProtocol all -SSLv2 能够支持哪些ssl协议
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 使用哪些加密套件

SSLCertificateFile /etc/httpd/ssl/httpd.crt 指定证书文件

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key 指定私钥文件
重启Apache服务即可

Apache安装与属性配置的更多相关文章

  1. apache安装及相应配置

    给公司装过环境,自己也装过自己的服务器环境.但是每次都是现谷歌,毕竟每个人遇到的问题都不一样,还是记录下,以防忘记 一.安装 Centos7默认已经安装httpd服务,只是没有启动.如果你需要全新安装 ...

  2. 阿里云服务器Centos上Apache安装SSL证书配置Https

    首先我们先去阿里云申请一个免费的SSL证书(https://common-buy.aliyun.com/?spm=5176.7968328.1266638..5e971232BzMSp5&co ...

  3. Apache安装和文件配置

    Apache和Tomcat的区别是:静态文件和动态页面,C++和Java的区别. 对比.

  4. SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、属性配置、多环境配置

    1 InteliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到官 ...

  5. WEB服务器----Apache 安装配置

    1.官网下载需要的安装包(包括主安装包和依赖包的下载)可以直接使用Linux的wget进行下载: httpd安装包下载地址:http://mirrors.hust.edu.cn/apache//htt ...

  6. SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、yml属性配置、多环境配置、自定义properties配置

    1 IntelliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到 ...

  7. LAMP_02_WIN下Apache安装配置

    1.下载http://httpd.apache.org/download 2.配置 下载完解压后有readme,首先进行阅读其中的VC运行库必须安装,否则会出现各种奇葩问题用命令行安装服务 发现报错, ...

  8. apache安装mod_deflate配置支持gzip

    apache 配置支持gzip apache使用gzip压缩能够大幅提高网站访问速度并节省网络流量,在网页响应头信息中可以判断是否支持压缩. HTTP/1.1 200 OK Date: Wed, 14 ...

  9. Apache安装配置步骤

    注释:这里以Linux 红帽商业版为例~~~~~~~纯手打啊 Apache安装配置步骤 准备:关闭其他虚拟设备 #/etc/init.d/libvirtd stop #/etc/init.d/xend ...

随机推荐

  1. Upload Files To FTP in Oracle Forms D2k

    Upload Files To FTP in Oracle Forms D2k Use following procedure to upload files to Ftp.   PROCEDURE ...

  2. 携程Ctrip DAL的学习1

    携程Ctrip DAL的学习 1 本人net开发菜鸟,原理请自行看github的官网源码. 我这里是简单的使用(helloworld的水平). Ctrip DAL是携程框架部开发的数据库访问框架,支持 ...

  3. js类型检测

    1.typeof  或者  typeof() 适合基本类型及function检测,遇null失效 ex: typeof 100      返回值为 "number" typeof ...

  4. Docker安装ruby2.1

    # sudo apt-get install Python-software-properties# sudo apt-add-repository ppa:brightbox/ruby-ng# su ...

  5. 移动端页面 弹出框滚动,底部body锁定,不滚动 / 微信网页禁止回弹效果

    需求:页面有弹出层菜单,当弹出层菜单超出屏幕可视区域时,不能滚动.加上滚动后,底部body的滚动事件如何禁止,加上了overflow:hidden;还是不可用. 如下图:地区弹出框可以滚动,而底部的b ...

  6. Struts2配置Result(Struts2_result)

    一.概要 二.常用四种类型的配置 Struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!D ...

  7. php7 httpd 2.4 编译

    1.获取源码httpd-2.4.23.tar.gz   php-7.1.0.tar.gz,安装顺序必须是先安装http然后php,lnmp同理   2.安装编译环境和php.httpd依赖包,红色字体 ...

  8. iOS开发 二维码生成

    基于libqrencode的二维码生成 + (void)drawQRCode:(QRcode *)code context:(CGContextRef)ctx size:(CGFloat)size { ...

  9. Android之Dialer之紧急号码

    Android之Dialer之紧急号码 e over any other (e.g. supplementary service related) number analysis. a) 112 an ...

  10. JavaWeb 自定义404页面

    本来,Tomcat中自定义404页面不过是在web.xml文件中写4行代码的事情. 直接引用 Tomcat官方FAQ 怎样自定义404页面? 编辑web.xml <error-page> ...