标签:httpd
2、工作模式切换
httpd支持三种模型,即perfork、worker、event模型。
三种模型的启动方法是不同的,perfork是默认的启动模型,通过httpd命令即可启动,可以通过rpm -ql |grep bin来看到有httpd、http.worker、http.event三个命令。
一般来说,apache的2.2版本之前并不支持event模型,在2.4以后才开始支持event模型。
2.1、修改配置文件
[root@37-test ~]# vi /etc/sysconfig/httpd
2.2、去掉以下注释,并重启服务
HTTPD=/usr/sbin/httpd.worker
2.3、查看启动情况
[root@37-test ~]# ps -aux |grep http
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
root 5844 0.0 0.0 175536 3844 ? Ss 08:31 0:00 /usr/sbin/httpd.worker
apache 5847 0.0 0.0 519796 5300 ? Sl 08:31 0:00 /usr/sbin/httpd.worker
apache 5857 0.0 0.0 519796 5288 ? Sl 08:31 0:00 /usr/sbin/httpd.worker
apache 5884 0.0 0.0 519796 5288 ? Sl 08:31 0:00 /usr/sbin/httpd.worker
3、常用命令
3.1、httpd命令的帮助
[root@37-test ~]# httpd -h
Usage: httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-S]
Options:
-D name : define a name for use in <IfDefine name> directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
-S : a synonym for -t -D DUMP_VHOSTS
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t : run syntax check for config files
3.2、查看httpd支持的核心模块有哪些?
[root@37-test ~]# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
3.3、http -D DUMP_MODULES:显示模块支持的扩展模块
[root@37-test ~]# httpd -D DUMP_MODULES
httpd: apr_sockaddr_info_get() failed for 37-test
httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1 for ServerName
Loaded Modules:
core_module (static)
mpm_prefork_module (static) ##使用prefork模型
http_module (static)
so_module (static)
auth_basic_module (shared)
auth_digest_module (shared)
authn_file_module (shared)
authn_alias_module (shared)
authn_anon_module (shared)
authn_dbm_module (shared)
authn_default_module (shared)
authz_host_module (shared)
authz_user_module (shared)
authz_owner_module (shared)
authz_groupfile_module (shared)
authz_dbm_module (shared)
authz_default_module (shared)
ldap_module (shared)
authnz_ldap_module (shared)
include_module (shared)
log_config_module (shared)
logio_module (shared)
env_module (shared)
ext_filter_module (shared)
mime_magic_module (shared)
expires_module (shared)
deflate_module (shared)
headers_module (shared)
usertrack_module (shared)
setenvif_module (shared)
mime_module (shared)
dav_module (shared)
status_module (shared)
autoindex_module (shared)
info_module (shared)
dav_fs_module (shared)
vhost_alias_module (shared)
negotiation_module (shared)
dir_module (shared)
actions_module (shared)
speling_module (shared)
userdir_module (shared)
alias_module (shared)
substitute_module (shared)
rewrite_module (shared)
proxy_module (shared)
proxy_balancer_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_ajp_module (shared)
proxy_connect_module (shared)
cache_module (shared)
suexec_module (shared)
disk_cache_module (shared)
cgi_module (shared)
version_module (shared)
Syntax OK
3.4、httpd -l:显示http模块的核心
[root@37-test ~]# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
3.5、httpd.worker -l
[root@37-test ~]# httpd.worker -l
Compiled in modules:
core.c
worker.c
http_core.c
mod_so.c
3.6、httpd.event -l
[root@37-test ~]# httpd.event -l
Compiled in modules:
core.c
event.c
http_core.c
mod_so.c
4、配置详解
4.1、服务运行脚本: /etc/rc.d/init.d/httpd
4.2、运行目录:/etc/httpd
4.3、配置文件:/etc/httpd/conf/
主配置文件 httpd.conf
扩展配置文件: /etc/httpd/conf.d/*.conf (优先级高于主配置文件)
4.4、目录结构
[root@37-test ~]# tree /etc/httpd/
/etc/httpd/
├── conf
│ ├── httpd.conf
│ └── magic
├── conf.d
│ └── README
├── logs -> ../../var/log/httpd
├── modules -> ../../usr/lib64/httpd/modules
└── run -> ../../var/run/httpd
5 directories, 3 files
外挂模块:/usr/lib(64)/httpd/modules/、/etc/httpd/modules/
强行刷新网页信息(绕过本地缓存,重新读取服务器信息):shift+f5
错误信息配置目录:/var/www/error/
apache提供的图标位置:/var/www/icons/
可执行CGI程序的位置:/var/www/cgi-bin/
httpd日志位置:/var/log/httpd/
设置httpd的账户和密码:/usr/bin/htpasswd
[root@37-test ~]# tree /var/www/ -L 1
/var/www/
├── cgi-bin
├── error
├── html
└── icons
4 directories, 0 files
5、如何配置httpd的工作属性:
5.1、基本语法
指令不区分字符大小写,但通常单词首字母大写。
但指令的值区分大小写。参数间用空白字符隔开。
5.2、配置文件的结构
主服务器和虚拟主机不能同时启用。
全局配置:对主服务器或者虚拟机都有效,且有些功能是服务器自身属性。
主服务器;主站属性 主服务器和虚拟主机不可并存,至少关闭一个。
虚拟主机:虚拟主机及属性定义
5.3、配置文件语法测试:
1、service httpd configtest
2、httpd -t
注意:大多数配置通过service httpd reload即可生效,如果修改端口需要重启服务。
五、全局配置
1、配置监听的端口和地址 ,可以配置多个端口,但端口能重复。
listen 192.168.1.5:8080
2、配置所选的mpm的属性
默认情况下,APACHE启动的是prefork模型,虽然worker模型使用多线程,可以实现资源共享,但是linux其实是不支持多线程的,这里的多线程就是轻量级进程。
切换到worker模型
[root@37-test ~]# more /etc/sysconfig/httpd #进入/etc/sysconfig/httpd文件
# Configuration file for the httpd service.
#
# The default processing model (MPM) is the process-based ##默认使用profork模型
# ‘prefork‘ model. A thread-based model, ‘worker‘, is also
# available, but does not work with some modules (such as PHP).
# The service must be stopped before changing this variable.
#
HTTPD=/usr/sbin/httpd.worker ##取消掉此注释
查看进程状态
[root@37-test ~]# ps axu |grep httpd
root 18229 0.0 0.0 177612 4044 ? Ss 09:49 0:00 /usr/sbin/httpd.worker ##主进程,派发任务
apache 18343 0.0 0.0 587408 5340 ? Sl 09:49 0:00 /usr/sbin/httpd.worker ##辅助进程,生成线程
mpm:多道处理模块
perfork:一个进程响应一个请求
(1)绑定特权端口
(2)派发或回收子进程
(3)读取分析主配置文件
<IfModule prefork.c>
StartServers 8 //起始空闲进程MinSpareServers 5 //最小空闲进程MaxSpareServers 20 //最大空闲进程ServerLimit 256 //最多并发访问的进程数量MaxClients 256 //服务器最大接受访问的客户端数量,不要超过系统内存最大承载能力。MaxRequestsPerChild 4000 /单个程序能够请求的最大传输次数要求
worker:一个进程生成多个线程,用户请求线程,linux的worker工作不如perfork工作效果好。
<IfModule worker.c>StartServers 4 //起始线程MaxClients 300 //最大线程数MinSpareThreads 25 //最小空闲线程MaxSpareThreads 75 //最大空闲线程ThreadsPerChild 25 //每个进程生成线程数量MaxRequestsPerChild 0 //每个进程最大相应请求数量</IfModule>
event:测试,未正式
3、配置服务器支持keep-alived: keepalive {on|off}
优势:减少客户端访问请求过程中的建立连接时间,适用于比较空闲的服务器。如果在繁忙的服务器使用会造成其他用户访问不到资源,可以通过限制keepalive时间来处理建立的链接
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive Off
限制长连接的方法:(如果有两个条件,其中一个条件满足就断开长连接)
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
keepalivetimeout=15(单位:秒,通常有2,3秒足以)
maxkeepaliverequests 100来限制最大连接为100个,限制单用户最大链接请求
4、配置加载的模块,可以通过此进行第三方模块的加载工作。
LoadModule path
这个路径是在参数 ServerRoot "/etc/httpd"为根目录进行指向子目录的。
六、主服务器配置
1、定义站点名称
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn‘t have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
ServerName www.example.com:80
如果没有输入,则以hostname输出的内容为依据,并且填写的主机名要能够通过DNS访问。
2、网页存放目录
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
3、配置页面文件访问属性
<directory>
options Indexes FollowSymlinks ExecCGI
indexes是否允许索引页面内容,显示网页源码的文件列表。
FollowSymlinks:是否允许跟随软连接,是否可以访问页面访问目录下的软连接文件。
ExecCGI是否允许执行CGI脚本。
</directory>
4、访问控制
基于客户端ip访问控制
Order allow,deny //后面的是默认法则,前面的允许规则没有明确定义的就按deny处理
Allow from all //定义allow允许的规则。
说明当存在多个策略的时候,限制范围小的优先级高,先执行。
Order allow,deny
Allow from 10.40.0.57
基于用户访问控制
(1)创建用户账户及密码:htpasswd-h:查看帮助信息-c:创建新的账户文件-m:以md5方式加密密
[root@37-test ~]# htpasswd -c /root/passwd gongbing //创建文件,并添加用户gongbing
[root@37-test ~]# htpasswd /root/passwd zhang //添加用户zhang
(2)在配置文件中添加如下内容:
<Directory "path">
Option Indexes
AuthName "name"
AllowOverride AuthConfig
AuthType Basic //此方法认证的用户名密码在传输过程中并不加密传输。
AuthUserFile /etc/httpd/conf/.httpdpasswd
authgroupfile /etc/httpd/httpdgrouppasswd
Require user valid-user //允许所有用户登录,可以输入用户名指定具体用户。
require group groupname
</Directory>
实例:
<Directory />
AllowOverride AuthConfig
Authname "gongbing"
AuthType Basic
AuthUserFile /root/passwd
Require user "gongbing"
</Directory>
5、userdir:每个用户可以拥有自己的站点,访问方法:http://host/~username/
方法:禁用UserDir disabled
启用UserDir public_html 要求访问者有权限。
6、定义默认主页面
DirectoryIndex:index.html default.html
7、配置日志功能
日志有两类:
访问日志
pache日志参数说明:
Apache日志格式字符串的含义%% 百分号(Apache2.0.44或更高的版本)%a 远端IP地址%A 本机IP地址%B 除HTTP头以外传送的字节数%b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示’-‘而不是0。%{Foobar}C 在请求中传送给服务端的cookieFoobar的内容。%D 服务器处理本请求所用时间,以微为单位。%{FOOBAR}e 环境变量FOOBAR的值%f 文件名%h 远端主机%H 请求使用的协议%{Foobar}i 发送到服务器的请求头Foobar:的内容。%l 远端登录名(由identd而来,如果支持的话),除非IdentityCheck设为”On“,否则将得到一个”-”。%m 请求的方法%{Foobar}n 来自另一个模块的注解Foobar的内容。%{Foobar}o 应答头Foobar:的内容。%p 服务器服务于该请求的标准端口。%P 为本请求提供服务的子进程的PID。%{format}P 服务于该请求的PID或TID(线程ID),format的取值范围为:pid和tid(2.0.46及以后版本)以及hextid(需要APR1.2.0及以上版本)%q 查询字符串(若存在则由一个”?“引导,否则返回空串)%r 请求的第一行%s 状态。对于内部重定向的请求,这个状态指的是原始请求的状态,—%>s则指的是最后请求的状态。%t 时间,用普通日志时间格式(标准英语格式)%{format}t 时间,用strftime(3)指定的格式表示的时间。(默认情况下按本地化格式)%T 处理完请求所花时间,以秒为单位。%u 远程用户名(根据验证信息而来;如果返回status(%s)为401,可能是假的)%U 请求的URL路径,不包含查询字符串。%v 对该请求提供服务的标准ServerName。%V 根据UseCanonicalName指令设定的服务器名称。%X 请求完成时的连接状态:X= 连接在应答完成前中断。+= 应答传送完后继续保持连接。-= 应答传送完后关闭连接。(在1.3以后的版本中,这个指令是%c,但这样就和过去的SSL语法:%{var}c冲突了)%I 接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。%O 发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。
定义日志方法:customlog “/path”
错误日志
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host‘s errors will be logged there and not here.
#
ErrorLog logs/error_log
此路径是相对路径,其实际路径为:
[root@37-test ~]# ll /var/log/httpd/
总用量 100
-rw-r--r-- 1 root root 0 12月 20 03:40 access_log
-rw-r--r-- 1 root root 63570 12月 19 17:28 access_log-20161220
-rw-r--r-- 1 root root 28050 12月 20 08:31 error_log
-rw-r--r-- 1 root root 583 12月 18 03:26 error_log-20161218
[root@37-test ~]# ll /etc/httpd/logs/
总用量 100
-rw-r--r-- 1 root root 0 12月 20 03:40 access_log
-rw-r--r-- 1 root root 63570 12月 19 17:28 access_log-20161220
-rw-r--r-- 1 root root 28050 12月 20 08:31 error_log
-rw-r--r-- 1 root root 583 12月 18 03:26 error_log-20161218
8、路径别名
DocumentRoot “/var/www/” 网页的根目录,下面可以跟两类容器,分别定义目录的访问权限。
<directory "fs_path"> //通过文件相对路径的方式限制访问,比如说对根目录进行限制就可以写成/var/www/。对
</directory>
<location "URL"> //定义通过URL方式访问的文件限制,
</location>
http://www.magedu.com/images/logo.gif------->>/web/htdocs/images/logo.gif
如果定义别名,可以将images这个目录映像为其他路径,而在访问是仍然使用images。
比如:Alias /images/ "/var/lib/gongbing/"
9、脚本路径别名:
CGI:ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
10、是否使用标准主机名,如果有多个主机名,会仅仅使用servername定义的主机名。
UseCanonicaName off
11、对于网页出现乱码,可能是由于AddDefaultCharSet UTF-8的设置问题,可以通过注释掉这选项来完成。
12、路径别名alias,用来定义在访问网页时域名下的目录的实际位置,比如访问,www,hrwz.com/image/image.jps文件,这个image的实际位置在哪里,默认情况下会放在有documentroot指定的目录后面,通过alias可以进行重定向。
documentroot "/var/www/"
alias /image/ "/var/tmp/" 即可,再访问 www,hrwz.com/image/目录时就不会访问/var/www/image而是/var/tmp/目录了。
13、脚本路径别名,ScriptAlias,用来定义执行脚本的目录,方法类似路径别名。
14、accessfilename用来定义单个目录、文件夹的访问权限、由于会存在继承问题,所以通常很少使用。
15、
<files ~”^\.ht”>
order deny,allow
deny from all
</files>
用来定义任何人不可以访问.ht开头的文件,实际上是一种安全策略。
六、虚拟主机
1、一个web程序可以服务于多个站点,就是虚拟主机技术。
2、HTTPS技术的关键是在传输层使用SSL或者TLS协议,实现基于ip地址的加密功能,也就是说,如果服务器使用基于主机名虚拟主机技术时,只能对一个ip地址进行https加密。
3、使用虚拟主机需要关闭主服务器,也就是两个不能同时使用,方法是关闭主服务器的DocumentRoot即可。
虚拟主机类型:
基于端口的虚拟主机
<VirtualHost 192.168.1.1:80>
ServerName "www.a.com"
DocumentRoot "/var/www/a"
<VirtualHost>
<VirtualHost 192.168.1.1:8080>
ServerName "www.b.com"
DocumentRoot "/var/www/b"
<VirtualHost>
基于ip的虚拟主机
<VirtualHost 192.168.1.1:80>
ServerName "www.a.com"
DocumentRoot "/var/www/a"
<VirtualHost>
<VirtualHost 192.168.1.2:80>
ServerName "www.b.com"
DocumentRoot "/var/www/b"
<VirtualHost>
需要网卡设置ip地址
基于主机名(域名)的虚拟主机
相同的ip地址服务器如何指定请求的是哪个虚拟主机的服务呢,是根据request报文的host来识别的。
NameVirtualHost 192.168.1.1:80 //httpd 2.2之前的版本必须使用namevirtualhost。
<VirtualHost 192.168.1.1:80>
ServerName "www.a.com"
DocumentRoot "/var/www/a"
<VirtualHost>
<VirtualHost 192.168.1.1:80>
ServerName "www.b.com"
DocumentRoot "/var/www/b"
<VirtualHost>
10、https配置
端口:443
前提:
1、需要模块支持ssl功能,需要libssl库
[root@37-test ~]# yum install mod_ssl
[root@37-test ~]# 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
2、提供CA(证书颁发机构)和公私秘钥,要安装openssl。
[root@37-test ~]# yum install openssl
2.1、生成CA及CA证书(私钥)。
[root@37-test CA]# openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048 ##名称是固定的。
Generating RSA private key, 2048 bit long modulus
............................................................................................................................................................................+++
....................+++
e is 65537 (0x10001)
[root@37-test CA]# ll private/
总用量 4
-rw-r--r-- 1 root root 1679 12月 22 15:45 cakey.pem
2.2、生成自签名证书(CA自己的证书) (包含公钥)
[root@37-test CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 1000
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn ##国家
State or Province Name (full name) []:beijing ##省
Locality Name (eg, city) [Default City]:beijing #市
Organization Name (eg, company) [Default Company Ltd]:dtedu ##公司
Organizational Unit Name (eg, section) []:sales #部门
Common Name (eg, your name or your server‘s hostname) []:web ##主机名
Email Address []:gongbing@dtedu.com ##联系用邮箱
2.3将证书放在公共可以下载的位置,然后将后缀改为crt。(windows只识别crt证书)
[root@37-test CA]# cp cacert.pem /var/ftp/pub/ca.crt
2.3、生成序列号文件(实验用)
在/etc/pki/CA目录下:
[root@37-test CA]# touch index.txt
[root@37-test CA]# echo “01">serial
[root@37-test CA]# ls
cacert.pem certs crl index.txt newcerts private serial
3、以上只是创建了证书颁发机构及证书颁发机构的证书,web服务器要实现https功能,需要创建自己的公私钥,并提交到CA去申请证书,然后由CA颁发证书才可以使用。
3.1、生成web自己的公私钥
[root@37-test ssl]# openssl genrsa -out httpd.key 1024
Generating RSA private key, 1024 bit long modulus
..................................++++++
..........................++++++
e is 65537 (0x10001)
[root@37-test ssl]# ls
httpd.key
3.2生成证书csr,其实是公钥。
[root@37-test ssl]# openssl req -new -key httpd.key -out httpd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:dtedu
Organizational Unit Name (eg, section) []:sales
Common Name (eg, your name or your server‘s hostname) []:www.dtedu.com ##此域名就是访问网站的域名
Email Address []:gongbing@dtedu.com
Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
3.3对web服务器的公钥进行证书颁发。
[root@37-test ssl]# openssl ca -in httpd.csr -out httpd.crt -days 1000
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Dec 23 06:56:21 2016 GMT
Not After : Sep 19 06:56:21 2019 GMT
Subject:
countryName = cn
stateOrProvinceName = beijing
organizationName = dtedu
organizationalUnitName = dtedu
commonName = www1.dtedu.com
emailAddress = gongbing@dtedu.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
AF:27:D6:D5:E9:82:AF:11:D7:A7:4A:1E:F5:C2:0E:70:AD:76:02:91
X509v3 Authority Key Identifier:
keyid:94:8F:2F:CD:31:41:EF:20:32:47:66:C9:62:68:10:8C:A8:9B:75:8A
Certificate is to be certified until Sep 19 06:56:21 2019 GMT (1000 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
3.4、修改ssl.conf配置文件
[root@37-test ssl]# more /etc/httpd/conf.d/ssl.conf |grep -v ^# |grep -v ^$
LoadModule ssl_module modules/mod_ssl.so
Listen 443
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
<VirtualHost _default_:443>
DocumentRoot "/var/www/html"
ServerName www.dtedu.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
注意:当httpd.conf文件中有多个虚拟主机时,对于同一个ip地址的虚拟主机只能提供一个https服务,如果有多个ip地址,则可以针对ip地址提供多个https服务。
域名重定向(url rewrite),将默认访问80端口的请求转向访问https的443端口。此课程暂时没有提供,较复杂。
标签:httpd
原文地址:http://137783.blog.51cto.com/127783/1968570