Httpd 配置相关基础详解

1、关闭欢迎页面

在浏览器中输入IP地址,则会出现Apache默认的欢迎页面,如果想关闭,则;

修改/etc/httpd/conf.d/welcome.conf……………………即重命名(不以.conf结尾)或删除

如:

[[email protected]~]# cd /etc/httpd/conf.d/

[[email protected]]# mv welcome.conf welcome.conf.burgess   ……….将文件后缀更改,则不会再显示默认欢迎页面

[[email protected]]# service httpd reload   ………………………将文件reload之后,刷新页面,则欢迎页面没了

Reloadinghttpd:

2、指定监听的地址和端口

[[email protected] ~]# cd /etc/httpd/conf

[[email protected]]# ls

httpd.conf  magic

[[email protected] conf]#vim httpd.conf

#Listen80

Listen172.16.249.120:80

Listen8080

解析:脚本用/Listen回车找到Listen 80 ,此为监听本机所有IP的80端口,指定IP;在监听一个8080端口,表示监听本机的所有IP端口

[[email protected]]# service httpd restart     …………………………….此处需要restart,不能reload

Stoppinghttpd:                                           [  OK  ]

Startinghttpd:                                            [ OK  ]

[[email protected]]# ss -tnl                   ……………………………………….查看监听是否生效

State      Recv-Q Send-Q                                   Local Address:Port                                     PeerAddress:Port

LISTEN     0     128                                                :::8080                                              :::*

LISTEN     0     128                                     172.16.249.120:80                                                 *:*

修改后:在浏览器上,输入172.16.249.120可以访问到网页;或者再加上  “:8080”也可以访问到相同内容

总结用法:Listen[IP:]PORT

注意:Listen可以出现多次

3、持久连接(persistent connection)

图示: (更多内容请参考:http://zh.wikipedia.org/wiki/HTTP%E6%8C%81%E4%B9%85%E8%BF%9E%E6%8E%A5http://www.cnblogs.com/protorock/archive/2007/06/10/778298.html

打开/etc/http/conf/httpd.conf文件,可修改下面信息

KeepAlive Off|On  ………………关闭或打开持久连接

MaxKeepAliveRequests 100   数量上限;On的情况下生效

KeepAliveTimeout 15   时间上限,单位second;On的情况下生效

4、MPMs ( Multi-Processing Modules)多处理模块

选项查看帮助 httpd -h

httpd -l: 显示编译进核心的模块

httpd -M: 显示DSO模块 (动态装卸载)

以下内容查看及设定在httpd服务脚本/etc/sysconfig/httpd

<IfModule prefork.c>

StartServers       8……………………服务器默认启动进程数   (可以用psaux | grep httpd 查看;一个主进程,八个子进程,主进程只启动子进程)

MinSpareServers    5………………..最少空闲进程数

MaxSpareServers   20…………………..最大空闲进程数

ServerLimit      256…………………………(服务器能响应的最多进程数,即client同时请求超过256个时候,则需要等待;假设一个进程处理时间需要2秒;则一天可处理进程数量为30*60*24=11059200,但网站访问量有峰值的,所以根据此选择配置服务器数量及带宽;计算器命令bc;最大并发数为1024)

MaxClients       256……………………..与上面的道理一样,小于等于ServerLimit

MaxRequestsPerChild 4000  ……………每个子进程响应请求次数不能超过4000次,若超过了,则销毁之,再创建一个

</IfModule>

worker与上面的prefork差不多,不再赘述

<IfModule worker.c>

StartServers        4

MaxClients        300

MinSpareThreads    25

MaxSpareThreads    75

ThreadsPerChild    25

MaxRequestsPerChild 0  ………………不作次数限制

</IfModule>

思考:以上面为参考,worker最多可以启动多少个进程?

5、 DSO

查看模块:httpd  -M     (后面为static的表静态;后面为share的为动态模块)

卸载模块:打开/etc/sysconfig/httpd,查找模块信息,若不想用某模块,可在其前面用#注释掉

LoadModule foo_module(模块名称)modules/mod_foo.so(模块路径,相对路径,相对于/etc/httpd/;但其为符号链接模块所在路径)

注意:修改了装载的模块后,httpd -t: 检查配置文件语法或者用service httpd configtest;reload即可生效;

6、指定Main Server(中心主机)的docroot (web资源服务器,负责发送预先创建好的或动态生成的内容;此些内容的放置位置称为docroot;全称:DocumentRoot"/var/www/html",也可在/etc/sysconfig/httpd查找到其定义)

例如:修改docroot为根下的/www/burgessdocs,操作如下;

[ [email protected] ~]# cd/etc/httpd/conf

[[email protected] conf]# ls

httpd.conf  httpd.conf~ magic

[[email protected] conf]#vim httpd.conf

[[email protected] conf]#mkdir /www/burgessdocs  -pv

[[email protected] conf]#vim /www/burgessdocs/index.html ……………………………..创建一个主页

#DocumentRoot  “/var/www/html” ……………………..用#注释掉此行

DocumentRoot  “/www/burgessdocs” ………………新加行写下新路径,也可在旧的路径直接改,但建议新加一行

[[email protected] conf]#httpd -t

Syntax OK

[[email protected] conf]#service httpd reload

Reloading httpd:

可以打开浏览器,输入IP,查看是否有内容,验证

注意:如果操作都没有问题,权限也没有问题,但是网页内容显示没有访问权限,则可以用getenforce 查看SELinux启用模式是否为disabled,若不是,则在/etc/selinux/config里面修改之。

7、 站点路径访问控制

分为文件系统与URL路径;如:想访问/www/burgessdocs/bbs/upload/a.rar路径,以(6)docroot为例;

文件系统路径:/www/htdocs/bbs/upload/a.rar

URL路径:http://Server_IP/bbs/upload/a.rar

基于本地文件系统路径

<Directory"/path/to/some_directory">

</Directory>

基于URL

<Location "/path/to/some_url">

</Location>

8、 Directory容器中的访问控制定义

8.1 Options  定义页面如何展示给clients;在/etc/httpd/conf/httpd.conf 中

当有Indexes时;演示:在以上步骤执行的情况下,修改<Directory“/www/html”>为下图所示路径,当有Idexes情况下,如下图所示

保存退出后reload一下,之后;

[[email protected] conf]#cd /www/burgessdocs

[[email protected]]# ls

index.html  index.html~

[[email protected]]# mv index.html   a.html

打开浏览器页面,则显示;

a.html可下载;点开a.html则显示信息

删掉Indexes之后,刷新页面;

如果提供a.html路径访问;http://172.16.249.120/a.html;则显示Hello Chicago!信息

解析:Indexes:当访问的路径下无默认的主页面时,将所有资源以列表形式呈现给用户;危险,慎用,如提供ftp一样的下载网站则可用,大多数情况下要把Idexes删掉;详细请参考:http://www.2cto.com/os/201212/176662.html

FollowSysLinks:跟随符号链接指向的原文件;

演示其功能,创建fstab.html指向/etc/fstab文件;

[[email protected]]# pwd

/www/burgessdocs

[[email protected]]# ln -sv /etc/fstab /www/burgessdocs/fstab.html

`/www/burgessdocs/fstab.html‘-> `/etc/fstab‘

[[email protected]]# ll

total 8

-rw-r--r--. 1root root 117 Dec 13 01:18 a.html

lrwxrwxrwx. 1root root  10 Dec 13 03:14 fstab.html ->/etc/fstab

-rw-r--r--. 1root root 117 Dec 13 01:11 index.html~

在172.16.249.120后指定fstab.html; http://172.16.249.120/fstab.html;

网页信息显示如下;

解析:如果开启FollowSysLinks;而不小心将符号连接指向一个敏感资源,则会被其他人查看到,所以最好关闭此功能,-FollowSysLinks(前面加上-,为关闭);</Directory>定义的段,此段之外的其他段也适用,所以删掉某选项,可能还会起作用,所以用“-”关闭

None: 一个也没有;

All: 所有

8.2 AllowOverride None   基于.htaccess隐藏文件的访问控制,一般用不到;详见/etc/httpd/conf/httpd.conf

8.3  基于IP的访问控制

白名单:Order allow,deny

Allow from all

黑名单:Order deny,allow

Deny from all

from后面能接受的地址格式:

IP, NetworkAddress

网络地址格式:

172.16

172.16.0.0

172.16.0.0/16

172.16.0.0/255.255.0.0

Eg:只允许172.16网段的访问,且拒绝172.16.100.16访问,则;

Order allow,deny

Deny from172.16.100.16

Allow from 172.16

在/etc/httpd/conf/httpd.conf更改为上面信息;

刷新页面显示(172.16.100.16为本机IP地址)

可以用 tail /var/log/httpd/error_log查看到本机IP地址denied信息

9、 定义默认的主页面

DirectoryIndex index.html index.html.var  可以列出多个,自左向右找,如果第一个没有,则寻找第二个….

10、 配置日志功能  (默认开启)

ErrorLog logs/error_log:定义错误日志文件路径;其符号链接至/var/log/httpd,可以ll /etc/httpd查看其链接;以后可能会用专门的日志收集磁盘或服务器

LogLevel warn   :比warn级别高的及包括warn信息都会被收集

LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined

%h  Remotehost    客户端(远程)主机

%l   Remotelogname (from identd, if supplied)    远程登录用户名,大多数情况都为空,用处不大

%u  Remote user(from auth; may be bogus if return status (%s) is 401) 用户

%t  Time therequest was received (standard english format) 时间

%r  First lineof request   请求报文的首行

(method  url  version )

%s  Status. Forrequests that got internally redirected, this is the status of the *original*request --- %>s for the last. 记录请求时的状态码(响应码)最后一个报文的响应码

%b Size ofresponse in bytes, excluding HTTP headers. In CLF format, i.e. a ‘-‘ ratherthan a 0 when no bytes are sent.  响应报文内容的大小(字节为单位)

%{Foobar}i Thecontents of Foobar: header line(s) in the request sent to the server.

%{referer}i: 跳转至当前页面之前来源的上一次所在的页面;

%{User-Agent}i:用户代理(浏览器);

详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

CustomLog logs/access_log combined: 访问日志

指令        日志文件       日志格式名称

11、 curl命令

curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxytunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

curl的常用选项:

-A/--user-agent <string> 设置(伪装)用户代理发送给服务器

Eg: [[email protected]~]# curl http://172.16.249.120/a.html

<html>

<head>

<title>This is Burgess‘s page</title>

</head>

<body>

<h1>Hello Chicago!</h1>

</body>

</html>

[[email protected] ~]# tail -f/var/log/httpd/access_log

172.16.249.120 - -[13/Dec/2014:05:13:01 +0800] "GET /a.html HTTP/1.1" 200 117"-" "curl/7.19.7(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18libssh2/1.4.2"

[[email protected] ~]# curl http://172.16.249.120/a.html

[[email protected] ~]# tail -f/var/log/httpd/access_log

172.16.249.120 - - [13/Dec/2014:05:18:36+0800] "GET /a.html HTTP/1.1" 200 117 "-" "Opera/15.1"

-basic 使用HTTP基本认证

--tcp-nodelay 使用TCP_NODELAY选项;在发送报文时候禁用Nagle算法(打包n个报文一块发送,用一个IP首部,节约带宽)

-e/--referer <URL> 来源网址

Eg:[[email protected]~]# curl -A "Opera/15.1" -e "www.burgess.com/index.html" http://172.16.249.120/a.html      ………….. 伪装成www.burgess.com/index.html访问

[[email protected] ~]# tail -f/var/log/httpd/access_log

172.16.249.120 -- [13/Dec/2014:05:34:50 +0800] "GET /a.html HTTP/1.1" 200 117 "www.burgess.com/index.html""Opera/15.1"

--cacert <file> CA证书 (SSL)

--compressed 要求返回是压缩的格式

-H/--header <line>自定义头信息传递给服务器

Eg:用vim编辑器打开配置文件/etc/httpd/conf/httpd.conf,修改信息如下

[[email protected] ~]#curl -H "testheader:burgess" http://172.16.249.120/a.h

[[email protected] ~]#tail -f /var/log/httpd/access_log

172.16.249.120 -- [13/Dec/2014:06:36:08 +0800] "GET /a.html HTTP/1.1" 200 117"-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "burgess"

-I/--head 只显示响应报文首部信息 (打开一个网页,按键F12为调试工具,可以查看各种首部等信息)

Eg: [[email protected] ~]# curl -I http://172.16.249.120/a.html

HTTP/1.1 200 OK

Date: Fri, 12 Dec 201421:41:31 GMT

Server: Apache/2.2.15(CentOS)

Last-Modified: Fri, 12 Dec2014 17:18:52 GMT

ETag:"a0011-75-50a081641943f"

Accept-Ranges: bytes

Content-Length: 117

Connection: close

Content-Type: text/html;charset=UTF-8

--limit-rate <rate> 设置传输速度

-u/--user<user[:password]>设置服务器的用户和密码

-0/--http1.0 使用HTTP 1.0  version;

用法:curl [options][URL...]

12、路径别名

docroot路径映射:

docroot: /www/burgessdocs

如果访问http://172.16.100.16/bbs/images/obama.html

则对应的172.16.100.16之后的路径/www/htdocs/bbs/images/obama.html

路径别名:

定义/bbs  是/web/forum/路径

如果http://172.16.100.8/bbs/images/obama.html

则对应文件路径/web/forum/images/obama.html

定义方法:

Alias /URL/ "/path/to/some_directory/"

Eg:

[email protected] ~]# mkdir/web/forum/images -pv

mkdir: created directory`/web‘

mkdir: created directory`/web/forum‘

mkdir: created directory`/web/forum/images‘

[[email protected] ~]# vim/web/forum/images/obama.html

<h1>BrackObama<h1>

之后用vim编辑器打开配置文件/etc/httpd/conf/httpd.conf,找一个有Alias的地方,添加信息

Alias /bbs/  “/web/forum/”  ………………………………….bbs及forum后面斜杠可以省略,但要保持一致;

[[email protected] ~]#service httpd reload

通过浏览器访问,则显示信息如下;而不是/www/burgessdocs下面的信息

应用:当我们的主机作为web服务器,访问docroot外的路径下的文件时,就会用到Alias

13、 设定默认字符集

AddDefaultCharset UTF-8  (在配置文件/etc/httpd/conf/httpd.conf)

常用字符集:UTF-8, GBK, GB2312, GB18030

14、基于用户的访问控制

14.1质询:

WWW-Authenticate:服务器用401状态拒绝客户端请求,说明需要用户提供用户名密码;

14.2认证:

Authorization: 客户端填入账号和密码后重新发出请求;包含认证算法、用户名和密码;都为明文的不安全,所以要加上认证方式

14.3安全域:security realm

docroot: /www/htdocs/

admin/

finance/

14.4认证方式:

基本认证:basic(基于Base64编码,通过抓包,解码,可以得到用户信息)

摘要认证:digest (很多浏览器不支持,很少用到,比基本认证安全;)

若用到基本认证,则,

(a)先检查/etc/httpd/conf/httpd.conf,是否有以下几个重要modules

LoadModuleauth_basic_module modules/mod_auth_basic.so

LoadModuleauthn_file_module modules/mod_authn_file.so

LoadModuleauthz_host_module modules/mod_authz_host.so

LoadModuleauthz_user_module modules/mod_authz_user.so

(b)假设/www/burgessdocs/admin/index.html 对于用户访问时需要基本认证,则

[[email protected] ~]# cd/www/burgessdocs/

[[email protected] burgessdocs]# ls

a.html  fstab.html index.html~

[[email protected] burgessdocs]#mkdir admin

[[email protected] burgessdocs]# cdadmin/

[[email protected] admin]# vim index.html

[[email protected] admin]# cd ..

[[email protected] burgessdocs]# ls

admin  a.html fstab.html  index.html~

[[email protected] burgessdocs]# mva.html index.html …………………为了便于访问,将a.html 改名为 index.html

(c)定义security realm

用vim编辑器打开配置文件/etc/httpd/conf/httpd.conf

<Directory"/www/burgessdocs/admin">

Options None

AllowOverride None

AuthType Basic  …..认证类型

AuthName "Burgess AdminArea"   安全域名,自定义

AuthUserFile/etc/httpd/users/.htpasswd  认证文件,即存放的认证密码、用户名等信息,与/etc/passwd/无关,一般用隐藏文件存放;路径可自定义,路径目录若没有需要创建;

Require  valid-user   …………………允许所有合法用户访问,即有密码  (如果规定Kevin跟James访问则Reqire user Kevin James,若还有用户则可以在其后面列出;Require valid-user: 允许账号文件中的所有有账号密码的用户访问,Require后注意所有用户与列出用户书写方式的区别)

</Directory>

(d) 提供用于认证的文件,了解htpasswd命令应用(htpasswd - Manage user files for basic authentication)

htpasswd [options]password_file username

-c: 添加第一个用户时自动创建账号文件;

-m: 以md5格式加密密码;

-s: 以sha格式加密密码;

-D: 删除指定用户

双击原来的shell,生成新shell 2,在/www/burgessdocs/执行以下命令

[[email protected] burgessdocs]#htpasswd -c -m /etc/httpd/users/.htpasswd Kevin   ……………………第一次创建用户密码用-c

New password:                                                                                      ……………………….密码为burgess

Re-type new password:

Adding password for userKevin

[[email protected] burgessdocs]# htpasswd -m/etc/httpd/users/.htpasswd James

New password:                                                                                      ……………………….密码为burgess

Re-type new password:

Adding password for userJames

[[email protected] burgessdocs]#tail /etc/httpd/users/.htpasswd   查看密码内容,为密文(.htpasswd隐藏文件,查看隐藏文件用ls -a 或ls -al)

Kevin:$apr1$bFvZ.CZt$JJRF2kAUnh19NGcAR.0G9/

James:$apr1$Gs65LvZ2$WUgyN14nAg2Luffv5FWQU1

在shell1中保存配置文件,检查语法错误,重新加载,然后查看浏览器网页http://172.16.249.120/admin ;显示页面如下;

这时就可以输入用户名与密码登陆查看信息了

如果只想让Kevin登陆,不让James登陆,可以修改 Require后面信息,

(e)组认证

示例:[[email protected]~]# cd /etc/httpd/

[[email protected]]# mkdir groups

[[email protected]]# cd groups/

[[email protected]]# vim .htgroup

NBAgr:Kevin Lebron   ……………………………组名NBAgr

[[email protected]]# httpd -t

Syntax OK

Cd 到/etc/httpd/conf

[[email protected] conf]#vim httpd.conf

<Directory"/www/htdocs/admin">

Options None

AllowOverride None

AuthType Basic

AuthName "Admin Area"

AuthUserFile /etc/httpd/users/.htpasswd

AuthGroupFile /etc/httpd/groups/.htgroup

Require group GRP1, ...

</Directory>

[[email protected] conf]#httpd -t

Syntax OK

[[email protected] conf]#service httpd restart

Stopping httpd:                                           [  OK  ]

Starting httpd:                                           [  OK  ]

用户Lebron为新加的,步骤略,在浏览器中可演示,Lebron Kevin可以登陆,James不能登陆

15、 虚拟主机:一个物理服务器服务于多个站点:每个站点通过一个虚拟主机来实现;

15.1 httpd支持三种类型的虚拟主机:

基于IP

基于Port

基于Host  ………………最常用的

注意:一般使用虚拟主机需要取消Main Server; 注释DocumentRoot指令即可(/etc/httpd/conf/httpd.conf);

15.2定义虚拟主机:

15.2.1基于IP;(环境:eth0: 172.16.249.120:80 ; eth0:0  172.16.249.121 ;)

添加网卡 ifconfigeth0:0  172.16.249.121

用vim打开/etc/httpd/conf/httpd.conf,

将DocumenetRoot“/www/burgessdocs”用#注释掉(如果Droot没有更改,则是注释掉DocumentRoot “/www/html”)

添加虚拟主机

<VirtualHost 172.16.249.120:80>

ServerName www.burgess.com

DocumentRoot “/Vhosts/www.burgess.com”

<\VirtualHost>

<VirtualHost 172.16.249.121:80>

ServerName www.burgess.org

DocumentRoot “/Vhosts/www.burgess.com”

<\VirtualHost>

将之前更改的监听端口,更改为默认,即:LISTEN 80 ,其他修改的LISTEN信息注释掉;

保存退出,检查语法httpd -t

[[email protected] conf]# mkdir -pv/Vhosts/www.burgess.{com,org} …………………….创建Droot

mkdir: created directory`/Vhosts‘

mkdir: created directory`/Vhosts/www.burgess.com‘

mkdir: created directory`/Vhosts/www.burgess.org‘

[[email protected] conf]# vim/Vhosts/www.burgess.com/index.html    ……………………内容为<h1>Like A Fish In Water<\h1>

[[email protected] conf]# vim/Vhosts/www.burgess.org/index.html    ………………………….内容为<h1>Beauty lies inthe lover’s eyes<\h1>

保存退出,检查语法httpd -t  重启service httpd restart

可在网页浏览器中输入IP地址显示相对应的信息

15.2.2基于port:

在基于以上步骤的前提下,启用之前设置好的 Listen 8080端口;将两个VirtualHost的IP改为一个,端口有一个改为8080即可;

在网页中输入http://172.16.249.120:8080/  可看到Beauty liesin the lover’s eyes;输入172.16.249.120可看到Like A Fish In Water

15.2.3基于Host

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

NameVirtualHost *:80   ………..(此项启用,*为所有地址,虚拟机定义的地址需要与其保持一致,httpd 2.2version上有此选项,2.4版本就没有了)

<VirtualHost 172.16.249.120:80>

ServerName www.burgess.com

DocumentRoot "/Vhosts/www.burgess.com"

</VirtualHost>

<VirtualHost 172.16.249.120:80>

ServerName www.burgess.org

DocumentRoot "/Vhosts/www.burgess.org"

</VirtualHost>

修改/etc/hosts配置文件(格式:IP   ServerName)

命令行访问:

[[email protected] ~]# curlhttp://www.burgess.org/

<h1>Beauty lies inthe lover‘s eyes</h1>

[[email protected] ~]# curlhttp://www.burgess.com/

<h1>Like A Fish InWater!</h1>

15.2.4还可以定义别名:

<VirtualHost172.16.249.120:80>

ServerName www.burgess.com

SeverAlias web.burgess.com  ………………………生效需要在/etc/hosts配置文件加上此别名信息

DocumentRoot"/Vhosts/www.burgess.com"

</VirtualHost>

以上方式可以混合运用

15.2.5自定义log路径

<VirtualHost172.16.249.120:80>

ServerName www.burgess.com

DocumentRoot"/Vhosts/www.burgess.com"

CustomLog“/var/log/httpd/access_burgess.com” combined  …………………………为www.burgess.com独立的log存放路径,其他的若没有,则存放中心主机一致

</VirtualHost>

16、 内置的status页面

查看status模块是否装载:[[email protected] ~]#httpd -M | grep status

在配置文件/etc/httpd/conf/httpd.conf中找到下面内容,并启用

<Location /server-status>

SetHandlerserver-status   …………………………….SetHandler(处理器)

Order deny,allow

Deny from all

Allow from 172.16    ………………………………可以设定特定网段 能够访问status信息

</Location>

验证:找一个172.16网段的主机,在浏览器中输入可以访问的IP,后面加上/server-status 则可查看status信息;若启用ExtendedStatus On,则可看到更详细信息

17、 https: ssl  (其相关知识更多请参考:http://burgess8909.blog.51cto.com/9607271/1588395)

ssl: secure socket layer, sslv3

tls: transport layer security, tlsv1

服务器认证、客户端认证、完整性、保密性、效率、普适性

https, http/ssl, https:// ,443/tcp

SSL会话简化过程:

(1) 客户端发送可供选择的加密方式并请求证书;

(2) 发送证书以及选定加密方式给客户端;

(3) 生成临时会话密钥,并使用服务器的公钥加密发送给服务器商;

(4) 双方进行安全通信

配置过程

(1)  建立私有CA (切换到 /etc/pki/CA目录)

[[email protected]]# (umask 077; openssl genrsa -out private/cakey.pem 2048)

[[email protected]]# openssl req -new -x509 -key private/cakey.pem -days 19890 -outcacert.pem

[[email protected]]# echo 01 > serial

[[email protected]]# touch index.txt

(2)  为服务器生成证书

[[email protected]]# mkdir /etc/httpd/ certs

[[email protected]]# (umask 077; openssl genrsa -out httpd.key 2048 )

[[email protected]]#openssl req -new -key httpd.key -out httpd.csr -days 19890

[[email protected]]#openssl ca -in httpd.csr -out httpd.crt -days 19890

详细步骤参考博客:http://burgess8909.blog.51cto.com/9607271/1588151

(3) 配置httpd使用数字证书

[[email protected] conf]#yum install mod_ssl -y    #……………….. 安装相应的模块程序包,默认没有安装

[[email protected] ~]#rpm -ql mod_ssl

/etc/httpd/conf.d/ssl.conf    # …………………..为其配置文件

/usr/lib64/httpd/modules/mod_ssl.so

/var/cache/mod_ssl

/var/cache/mod_ssl/scache.dir

/var/cache/mod_ssl/scache.pag

/var/cache/mod_ssl/scache.sem

[[email protected] ~]# ss -tnl

LISTEN     0     128                                       :::443                                       :::*    ……………….可以看到443端口开启,若没有,则restart一下;

编辑/etc/httpd/conf.d/ssl.conf,开启检查以下相关信息

LoadModule  ssl_module modules/mod_ssl.so

Listen 443

<VirtualHostIP:PORT>

ServerName   www.burgess.com:443

DocumentRoot    可以修改DR路径,如修改为/www/sslhost

SSLCipherSuiteALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW    #!表示移除,+表加进来的

SSLEngine on      # ………………………SSL功能是否开启

SSLCertificateFile     #/etc/httpd/certs/httpd.crt将路径修改为已生成的CA证书路径

SSLCertificateKeyFile     #/etc/httpd/certs/httpd.key生成密钥路径

</VirtualHost>

保存退出;检查语法;reload; tail/var/log/httpd/error_log 查看信息,显示路径/www/sslhost不存在;创建之,并为其创建一个index.html页面

[[email protected] ~]#  mkdir /www/sslhost -pv

[[email protected] ~]#  vim /www/sslhost/index.html

<h1>Loversdon‘t finally meet somewhere. They‘re in each other all along</h1>

更改/etc/httpd/conf/httpd.conf下的DocumentRoot路径为/www/sslhost

在浏览器输入172.16.249.120;则显示您的链接不是私密链接;之所以出现这样的情况,是因为本地不能识别CA证书,所以把应该CA导入到本地,其次CA的名称应该为www.burgess.com,而非访问IP地址。

将CA(/etc/pki/CA/cacert.pem)导入到本地:直接复制到本地;并将cacerts.pem后缀更改为cacerts.crt;双击直接导入,安装,证书存储位置

访问地址与持有者身份不一致:则将www.burgess.com与对应IP写进hosts文件;windows下的路径/c/windows/system32/drivers/etc/hosts  ………….若在里面更改不了,可以拖出来更改

再次访问输入:www.burgess.com;则会显示正常信息

用curl访问则需要将IP与主机名写进/etc/hosts文件中

重启httpd服务

测试:

openssls_client -connect IP:PORT -CAfile /path/to/ca_certificat_file

注意:ssl会话只能基于IP创建,这意味着如果服务器仅有一个IP,那么仅为一个虚拟主机提供https服务;

18 访问属性配置(总结)

基于文件系统的配置:(基于路径做访问控制)

<Directory [~]"">

...

</Directory>

~: 后面的路径支持模式匹配,但性能会比较差,不建议用

<File [~]"">

...

</File>

<FileMatch"">

...

</FileMatch>

基于URL的配置:

<Location [~]"">

...

</Location>

<LocationMatch"">

...

</LocationMatch>

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

[[email protected] ~]#vim /etc/httpd/conf/httpd.conf

<VirtualHost *:80>

DocumentRoot/www/www.enimem.com

ServerName www.enimem.com

</VirtualHost>

[[email protected] ~]#vim /www/www.enimem.com/index.html

<h1>Youth is not atime of life; it is a state of mind.</h1>

[[email protected] ~]# cp/var/log/messages /www/www.enimem.com/test.html

在浏览器中输入信息及显示结果如下;

[[email protected] ~]#ll  /www/www.enimem.com/test.html

-rw------- 1 root root 94326 Dec 21 19:59/www/www.enimem.com/test.html

[[email protected] ~]#chmod 644 /www/www.enimem.com/test.html    #给其权限

访问页面刷新,如下:

添加压缩功能

[[email protected] ~]#vim /etc/httpd/conf/httpd.conf

LoadModuledeflate_module modules/mod_deflate.so   #检查此模块是否打开

#将一下内容粘贴至配置文件中,粘贴位置自定义,如果粘贴在虚拟机之外,则适用于所有虚拟主机

SetOutputFilterDEFLATE      #(输出过滤器,判别文件类型,然后确定是否压缩)

# mod_deflateconfiguration

# Restrictcompression to these MIME types      #表示过滤成功的类型,执行压缩

AddOutputFilterByTypeDEFLATE text/plain

AddOutputFilterByTypeDEFLATE text/html

AddOutputFilterByTypeDEFLATE application/xhtml+xml

AddOutputFilterByTypeDEFLATE text/xml

AddOutputFilterByTypeDEFLATE application/xml

AddOutputFilterByTypeDEFLATE application/x-javascript

AddOutputFilterByTypeDEFLATE text/javascript

AddOutputFilterByTypeDEFLATE text/css           #[css层级集文样式表]

# Level of compression (Highest 9 - Lowest 1)

DeflateCompressionLevel9        #压缩比最大,压缩后传输速率最快,同时也最消耗cpu,所以因地制宜根据cpu与带宽选择理想压缩比

# Netscape4.x has some problems.

BrowserMatch^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08have some more problems

BrowserMatch^Mozilla/4\.0[678] no-gzip

# MSIE masqueradesas Netscape, but it is fine

BrowserMatch\bMSI[E] !no-gzip !gzip-only-text/html       #IE浏览器被归类于Mozilla,所以默认不压缩,而其支持压缩,所以此项为开启压缩功能

[[email protected]]# httpd -t    #检查语法错误,有报错,但没影响

AH00526: Syntaxerror on line 105 of /etc/httpd24/extra/httpd-ssl.conf:

SSLCertificateFile:file ‘/etc/httpd24/certs/httpd.crt‘ does not exist or is empty

[[email protected]]# service httpd restart

刷新页面后显示如下;

如果用curl请求,则不压缩

[[email protected] ~]# curl -I http://172.16.249.120/test.html

HTTP/1.1 200 OK

Date: Sun, 21 Dec 2014 19:01:54 GMT

Server: Apache/2.2.15 (CentOS)

Last-Modified: Sun, 21 Dec 2014 11:59:45 GMT

ETag: "120018-17076-50ab8ad8cee8e"

Accept-Ranges: bytes

Content-Length: 94326

Connection: close

Content-Type: text/html; charset=UTF-8

20 、httpd程序自带的工具程序:

httpd: apache的服务程序

-t: 配置文件语法测试

-M: 列出所有已经装载的模块

-l: 列出所有的静态模块

-S:列出所有的虚拟主机 (已经配置好的)

htpasswd: basic认证基于文件实现时用到账号密码文件生成器(nginx未带此工具)

apachectl: shell脚本,httpd服务控制

apxs: httpd得以扩展使用第三方模块的工具接口;(若没有则安装httpd-devel;  apxs -h显示模块信息,此工具相当于钩子,挂第三方模块的)

htdigest: 为digest认证创建和更新用户认证文件(摘要认证,很少用)

rotatelogs: 不关闭httpd而切换其使用到的日志文件

access_log, access_log.1,access_log.2 (可以不关闭httpd,就可保存日志,后缀最大号的为最先生成的,如果继续滚动保存,则后缀号码也会变化)

suexec: 访问某些特殊权限配置的页面资源时,临时切换至指定用户

User apache

Group apache

ab: apache bench  对apache做压力测试的

时间: 2024-08-01 10:32:15

Httpd 配置相关基础详解的相关文章

HAProxy:基础详解

一.简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. HAProxy实现了一种事件驱动.单一进程模型,此模型支持非常大的并发连接数.多进程或多线程模型受内存

haproxy 基础详解 及 动静分离的实现

haproxy 介绍 1 工作在ISO 七层 根据http协议(或者工作在ISO四层 根据tcp协议) 提供web服务的负载均衡调度器 负载均衡调度器分类 工作在四层: # lvs 工作在七层: # nginx (web,http reverse proxy,cache) # haproxy (http reverse proxy,tcp proxy) # tcp: 实现MySQL的读写中读的负载均衡 # ats (apache traffic server) # perlbal # pound

Linux下FFMPEG--H264--编码&&解码的C实现与相关原理详解

FFMPEG是很强大的一套视频音频处理库,不过,强大的功能一般免不了复杂的实现,或者更加现实地说,"麻烦"的部署和使用流程 关于"FFMPEG怎么部署"这事就放在另一篇文章啦,下面入正题.. 编码encoder模块和解码decoder模块都有init初始化方法和资源free方法 init初始化方法主要是进行ffmpeg所必需的编解码器的初始化和部分功能方法的参数配置,而free资源释放方法则是相应地进行必要的回收 Encoder模块的实现和细节分析 #include

asp.net中web.config配置节点大全详解【转】

web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所在目录下不存在web.config文件或者web.config文件中不存在该结点名,则查找它的上级目录,直到网站的根目录. (3)如果网站根目录下不存在web.config文件或者web.config文件中不存在该节点名则在%windir%"Microsoft.NET"Framework"v2.0.

MySql绿色版配置及使用详解

最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySql所以在配置的时候出现了一些问题,该篇文章就主要针对MySql绿色版的配置及其使用进行讨论. 一.MySql概述 MySql数据库是有瑞典MySql AB公司开发,现在该公司被Oracle收购属于Oracle所有.同SQL Server类似,它也是基于关系型数据库的数据库管理系统,在Web应用方面MySQL是最好的RDBMS之一,因为它

webpack安装配置使用教程详解

webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对于不喜欢使用 jspm测试的朋友可以参考一下. webpack 入门 目录 1 安装 webpack2 初始化项目3 webpack 配置4 自动刷新5 第三方库6 模块化7 打包.构建8 webpack 模板我最近大量使用的是 jspm,但因为用它搭建的前端开发环境中,写测试代码非常困难,而项目又

Nginx配置与应用详解

前言 Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能.Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品.目前,包括新浪.腾讯等知名网站都已使用Nginx作为Web应用服务器.本文带来的是Nginx配置与应用详解. 基础特性 基本功能 静态资源的web服务器,能缓存打开的文件描述符 反向代理服务器,缓存.负载均衡 支持FastCGI 模块化,非DS

java开源框架SpringSide3多数据源配置的方法详解

原创整理不易,转载请注明出处:java开源框架SpringSide3多数据源配置的方法详解 代码下载地址:http://www.zuidaima.com/share/1781579130801152.htm 在SpringSide 3社区中,不断有人提出多数据源配置的问题,但是时至今日却一直没有一个完美的答案.经过一个星期的折腾,我总算搞清楚了在SpringSide 3中配置多数据源的各种困难并加以解决,在这里,特地把我配置SpringSide 3项目中多数据源的过程写出来,与大家分享. 我使用

Apache2 httpd.conf配置文件中文版详解

这篇文章转载于http://www.cnblogs.com/xkxk/p/5501821.html Apache2 httpd.conf配置文件中文版详解## 基于 NCSA 服务的配置文件.##这是Apache服务器主要配置文件.#它包含服务器的影响服务器运行的配置指令.#参见以取得关于这些指令的详细信息##不要只是简单的阅读这些指令信息而不去理解它.#这里只是做了简单的说明,如果你没有参考在线文件,你就会被警告.##这些配置指令被分为下面三个部分:#1. 控制整个Apache服务器行为的部分