HTTP常用配置信息详解

一、安装httpd

二、相关文件路径

三、配置文件详解

四、转载比较详细的HTTP配置中英文对照


一、安装httpd

1、安装方式:yum源、rpm包、源码包编译安装,这里为了方便使用yum源安装

[[email protected] html]# yum install -y httpd

可以安装本地帮助手册

[[email protected] conf]# yum install -y httpd-manual

访问地址http://httpd主机ip/manual/

2、开启服务

[[email protected] vsftpd]# chkconfig --list httpd
httpd              0:off    1:off    2:off    3:off    4:off    5:off    6:off
[[email protected] vsftpd]# chkconfig httpd on
[[email protected] vsftpd]# chkconfig --list httpd
httpd              0:off    1:off    2:on    3:on    4:on    5:on    6:off

3、测试

(1)、可以暂时关闭iptables,在浏览器地址栏中输入服务器主机ip即可成功访问到httpd欢迎页面,欢迎页面配置文件/etc/httpd/conf.d/welcome.conf

(2)、可以在/var/www/html/下创建默认主页面文件index.html,那么以主机ip访问时,将不显示欢迎信息,而是index文件内容

[[email protected] html]# vim /var/www/html/index.html
编辑内容如下
<html>
        <title>Test Page</title>
        <body>
                <h1>Hello world.</h1>
                Test information.
	</body>
</html>

二、相关文件路径

服务脚本:/etc/rc.d/init.d/httpd

运行目录:/etc/httpd(安装目录)

主配置文件:/etc/httpd/conf/httpd.conf

扩展配置:/etc/httpd/conf.d/*.conf

监听socket: http,80/tcp   https,443/tcp

网页文件目录(DocumentRoot):/var/www/html/

CGI格式的脚本存放位置:/var/www/cgi-bin/

查看httpd核心组建

[[email protected] conf]#  httpd -l

获取httpd命令简单帮助

[[email protected] conf]# httpd -h

查看所有装载的模块

[[email protected] conf]# httpd -t -D DUMP_MODULES

三、配置文件详解

配置文件由3部分组成,主服务器和虚拟主机不能同时启用

[[email protected] html]# grep "Section" /etc/httpd/conf/httpd.conf
### Section 1: Global Environment    #全局环境,对主服务器和虚拟主机都生效,有些配置是服务器自身工作属性
### Section 2: ‘Main‘ server configuration    #主服务器配置,主站配置    
### Section 3: Virtual Hosts    #虚拟主机配置

修改配置文件后,使用配置文件语法测试,大多数配置service httpd reload即可生效,但是改了端口设置则需要restart

[[email protected] conf]# httpd -t
Syntax OK    #表示没有问题
或者
[[email protected] conf]# service httpd configtest
Syntax OK

1、配置监听的地址和端口

Listen 80

Listen 10.1.1.112:80

2、配置所选用的MPM的属性,MPM:多道处理模块,定义apache响应多个用户同时请求的工作模型

(1)、prefork:一个进程响应一个请求(默认使用)

(2)、worker:一个进程生成多个线程,没有线程响应一个请求

启用该模块时,需要编辑/etc/sysconfig/httpd,去掉#号

#HTTPD=/usr/sbin/httpd.worker

# prefork MPM

<IfModule prefork.c>  
StartServers       8    #启动web服务时,启动8个空闲进程  
MinSpareServers    5    #最小空闲进程数  
MaxSpareServers   20    #最大空闲进程数  
ServerLimit      256    #允许最大并发连接请求数  
MaxClients       256    #允许同时连接的客户端数  
MaxRequestsPerChild  4000    #单个子进程在其生命周期内处理的总请求数限制,当某个子进程处理过的总请求数到达这个限制后这个进程就会被回收,如果设为0,那么这个进程永远不会过期(这样如果有内存泄露的话就会一直泄露下去……)  
</IfModule>

# worker MPM  
<IfModule worker.c>  
StartServers         4    #启动web服务时,启动4个空闲线程  
MaxClients         300    #允许同时连接的客户端数  
MinSpareThreads     25    #最少空闲线程数  
MaxSpareThreads     75    #最大空闲线程数  
ThreadsPerChild     25    #每个进程允许生成的线程数量  
MaxRequestsPerChild  0    #  
</IfModule>

3、配置服务器开启持久连接keep-alived,空闲服务器可以开启,繁忙的服务器关闭该功能比较好

KeepAlive Off    #关闭    KeepAlive On    #打开

KeepAliveTimeout 15    #超时时长,单位秒,一个连接超过15秒就断开

MaxKeepAliveRequests 100    #一次持久连接中,最多请求100个资源就断开

4、配置加载的模块信息,不需要加载就用#号注释掉

# Example:

LoadModule 模块名称 相对路径,相对于这个路径/etc/httpd  
# LoadModule foo_module modules/mod_foo.so

5、定义站点名称

例如:

ServerName localhost:80

ServerName 127.0.0.1:80

ServerName www.example.com:80

6、配置站点根目录

DocumentRoot "/var/www/html"

<Directory "FS_PATH">  
</Directory>

<Location "URL">  
</Location>

7、配置页面文件访问属性

<Directory "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride None    #允许优先,用来控制指令

Order allow,deny  
    Allow from all

</Directory>

Indexes    是否允许索引页面,生产环境中不是下载站点,建议关闭

FollowSymLinks    跟随软链接文件

SymLinksifOwnerMatch    跟随软链接文件,但属主需匹配,意味着apache用户是文件的属主

ExecCGI    是否允许运行CGI脚本

All    全部开启

None    全部关闭

8、访问控制

(1)、基于客户端访问控制

Order allow,deny
    Allow from all               #默认deny,但是下面用allow定义了允许所有,所以整个控制意为放行

----------------------------

Order allow,deny
    Allow from 10.1.1. 0/8              #默认deny,但是下面用allow定义允许访问的地址段,所以整个控制对定义的地址段放行

---------------------------

Order allow,deny  
    Deny from 10.1.1. 0/8              #默认deny,但是下面用deny定义拒绝访问的地址段,所以整个控制就是拒绝所有访问

---------------------------

Order:定义allow和deny哪个为默认法则,写在后面的为默认法则,写在前面的指令没有显示定义的即受后面的控制

(2)、基于用户访问控制

DocumentRoot "/var/www/html"

<Directory "/PATH/TO/DocumentRoot_SUBDIR">      指定访问路径,通常为目录为站点根目录的子目录  
    Options None    选项  
    AllowOverride AuthConfig    是否允许覆盖、启用用户访问控制  
    AuthName "Realm"    认证名称,“”内是说明信息  
    AuthType Basic    认证类型  
    AuthUserFile /path/to/passwords    用户帐号文件  
    Require jerry tom    指明可以登录的用户,所有用户使用valid-user  
</Directory>

这里我们在/etc/httpd/conf/下创建一个隐藏的帐号文件:

htpasswd -c –m /etc/httpd/conf/.htpass jerry

添加另一个用户

htpasswd –m /etc/httpd/conf/.htpass tom

创建用户帐号文件,使用命令htpasswd,可用htpasswd -h获取帮助信息

[[email protected] httpd]# htpasswd -h
Usage:
	htpasswd [-cmdpsD] passwordfile username
	htpasswd -b[cmdpsD] passwordfile username password

	htpasswd -n[mdps] username
	htpasswd -nb[mdps] username password
 -c  Create a new file.    #第一次创建时,使用该选项,再次像文件写入时不要使用,会被覆盖
 -n  Don‘t update file; display results on stdout.
 -m  Force MD5 encryption of the password.    #用户密码是使用md5加密的
 -d  Force CRYPT encryption of the password (default).
 -p  Do not encrypt the password (plaintext).    #不加密,明文存放
 -s  Force SHA encryption of the password.    #用户密码是使用SHA加密的
 -b  Use the password from the command line rather than prompting for it.
 -D  Delete the specified user.
On Windows, NetWare and TPF systems the ‘-m‘ flag is used by default.
On all other systems, the ‘-p‘ flag will probably not work.

(3)、基于组的访问控制

<Directory "/PATH/TO/DocumentRoot_SUBDIR">      指定访问路径,通常为目录为站点根目录的子目录  
    Options None    选项  
    AllowOverride AuthConfig    
    AuthName "Realm"    认证名称,“”内是说明信息  
    AuthType Basic    认证类型  
    AuthGroupFile /path/to/groupfile    用户帐号文件  
    Require GRP_NAME    指明可以登录的用户,所有用户使用valid-user  
</Directory>

其中groupfile是一个文本文件,文件内容是用户名

9、userdir,让用户有个自己的站点

访问方式:http://HOST/~username/

<IfModule mod_userdir.c>  
    #  
    # UserDir is disabled by default since it can confirm the presence  
    # of a username on the system (depending on home directory  
    # permissions).  
    #  
    UserDir disabled

#  
    # To enable requests to /~user/ to serve the user‘s public_html  
    # directory, remove the "UserDir disabled" line above, and uncomment  
    # the following line instead:  
    #

#UserDir public_html    启用该项,在用户家目录下新建目录public_html,并且apache用户要有访问权限,setfacl –m u:apache:x /home/username/public_html

</IfModule>

10、定义默认主页面

DirectoryIndex index.html index.jsp index.php index.html.var

有多个文件名时,会从左至右找到目录中符合条件的主页面文件

11、文件访问控制

<Files ~ "^\.ht">    该符号~表示模式匹配  
    Order allow,deny  
    Deny from all  
    Satisfy All  
</Files>

12、配置日志功能,apache的日志是自己管理的

日志有两类:错误日志、访问日志

[[email protected] conf]# ls /etc/httpd/logs/
access_log  error_log
[[email protected] httpd]# cd /etc/httpd/
[[email protected] httpd]# ls -l
total 8
drwxr-xr-x. 2 root root 4096 May 17 00:28 conf
drwxr-xr-x. 2 root root 4096 May 16 23:52 conf.d
lrwxrwxrwx. 1 root root   19 May 16 17:18 logs -> ../../var/log/httpd    #日志目录实际位置在/var目录下

错误日志:ErrorLog logs/error_log    无需指定日志格式

访问日志:CustomLog logs/access_log common    需指定日志格式

日志格式

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

%h:客户端主机ip

%l:客户端登录的主机地址,通常为匿名访问,日志记录为-,表示空

%u:认证提供的用户名,通常为匿名访问,日志记录为-,表示空

%t:请求到达时间

%r:请求报文的起始行,内容有请求连接的方法get、请求的资源、使用的协议版本

%>s:%s显示内部完成重定向以后的状态码,%>s为用户请求到达的原始响应的状态码

%b:响应报文的大小,单位bytes,不包含HTTP首部

%{Referer}i:定义由哪个超链接跳转

%{User-Agent}i:所使用的浏览器

13、设定默认字符集

AddDefaultCharset UTF-8

14、路径别名

Alias /error/ "/var/www/error/"

两个文件夹都在站点默认根目录下,使用别名后,可以定义访问路径为http://www.test.com/error/时,显示的是/var/www/error/下的内容

15、脚本路径别名:定义CGI的执行目录

<Directory "/var/www/html">

Options Indexes FollowSymLinks ExecCGI    #启用CGI模块,添加ExecCGI

AllowOverride None

Order allow,deny  
    Allow from all

</Directory>

注意:为了安全我们可以不在上面启用,而是使用别名

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"    页面访问路径为http://www.test.com/cgi-bin/test.sh时,实际访问的是/var/www/cgi-bin/中的CGI脚本

测试文件test.sh

#!/bin/bash
#
cat << EOF
Content-Type: text/html
<pre>
The hostname is: `/bin/hostname`.
The time is: `date`.
EOF
# end of cgi script file

16、虚拟主机

使用虚拟主机时,不能使用主服务器,关闭主服务器:注释主服务器的DocumentRoot

(1)、类型:

基于端口的虚拟主机:监听不同的端口,使用相同的ip

基于IP的虚拟主机:监听相同端口,使用不同ip地址

基于主机名的虚拟主机:监听相同端口,使用相同ip地址,使用不同的主机名,开启NameVirtualHost *:80

(2)、每个虚拟主机的定义

#<VirtualHost *:80>    *指所有地址的80端口上,也可以是ip  
#    ServerAdmin [email protected]  
#    DocumentRoot /www/docs/dummy-host.example.com  
#    ServerName dummy-host.example.com  
#    ErrorLog logs/dummy-host.example.com-error_log  
#    CustomLog logs/dummy-host.example.com-access_log common  
#</VirtualHost>

(3)、前文中适用于主服务器配置的配置信息也可以用于配置虚拟主机

17、httpd status

httpd状态信息输出模块

LoadModule status_module modules/mod_status.so

ExtendedStatus On    是否开启该功能

#<Location /-status>    定义访问status信息时,是通过哪个url,例如http://10.1.1.112/status  
#    SetHandler server-status    处理器名称server-status  
#    Order deny,allow  
#    Deny from all  
#    Allow from .example.com  
#</Location>

下面配置信息中,未启用Order来控制主机访问,所以不需要使用AllowOverride

<Location /status>  
    SetHandler server-status  
    AuthName "Status"  
    AuthType Basic  
    AuthUserFile /etc/httpd/conf/.statuspass  
    Require valid-user  
</Location>

18、https的实现

SSL/TLS会话的建立仅能基于IP地址进行,只有1个IP时,只能给一个虚拟主机提供SSL;访问端口443/tcp

前提:已安装openssl(系统默认已安装),安装httpd模块mod_ssl

[[email protected] httpd]# yum install -y mod_ssl

步骤

(1)、生成私钥

(2)、生成证书申请

(3)、使用自建CA签署证书

以上操作参考http://64314491.blog.51cto.com/2784219/1651785

(4)、配置文件/etc/httpd/conf.d/ssl.conf

常用配置项

<VirtualHost _default_:443>    _default_表示默认虚拟主机,可以直接指定主机ip

#DocumentRoot "/var/www/html"    虚拟主机工作目录

#ServerName www.example.com:443    虚拟主机主机名和访问端口

SSLEngine on    是否开启SSL安全认证功能

SSLProtocol all -SSLv2    支持除SSLv2外所有的SSL协议

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW    SSL支持的加密套件,!表示不支持

SSLCertificateFile /etc/pki/tls/certs/localhost.crt    证书文件路径

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key    私钥文件路径

以上配置好后,重启服务,windows上安装签署的证书然后用浏览器打开站点https://www.test.com或者使用命令测试

测试命令,指定连接的主机及端口、CA证书

#openssl s_client -connect www.test.com:443 -CAfile /etc/pki/CA/cacert.pem

#GET / HTTP/1.1    使用GET连接方式,指定url“/”,指定使用的访问协议“HTTP/1.1”

#Host:www.test.com  指定主机名后,敲两次回车,显示页面信息及OK提示,表示测试成功

19、其他

TypesConfig /etc/mime.types    默认获取文件时,文件资源的类型

<IfModule mod_mime_magic.c>    模块允许服务器充文件内容来确定文件类型  
#   MIMEMagicFile /usr/share/magic.mime  
    MIMEMagicFile conf/magic    配置文件位置/etc/httpd/conf/magic  
</IfModule>

#AddType    新增支持的文件类型,以某个后缀识别为什么格式的文件

AddType application/x-compress .Z  
AddType application/x-gzip .gz .tgz  
AddType application/x-x509-ca-cert .crt  
AddType application/x-pkcs7-crl    .crl


四、转载比较详细的HTTP配置中英文对照

http://www.cnblogs.com/adamite/p/apache_configuration.html

时间: 2024-10-15 15:21:51

HTTP常用配置信息详解的相关文章

spring boot配置信息详解

# REDIS (Redis 配置)# 连接工厂使用的数据库索引spring.redis.database= 0# Redis服务器主机spring.redis.host= localhost# 登录redis服务器的密码spring.redis.password= # 给定时间池可以分配的最大连接数 使用负值为无限制spring.redis.pool.max-active= 8# 池中“空闲”连接的最大数量 使用负值来表示无限数量的空闲连接spring.redis.pool.max-idle=

Angular ui-router的常用配置参数详解

一.$urlRouterProvider服务 $urlRouterProvidfer负责监听$location,当$location变化时,$urlRouterProvider将在规则列表中查找匹配的值. 1.$location是对window.location的封装. 2.otherwise(rule)定义当请求无效时的路径跳转 二.$state服务 $state服务是负责代表状态以及提供状态之间的装换,它还能提供你当前以及上一个的状态. 1.方法:go(to,params,options)

Nginx URL重写(rewrite)配置及信息详解

Nginx URL重写(rewrite)配置及信息详解 URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向.Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的.默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持 rewrite是实现URL重写的关

Nginx状态信息(status)配置及信息详解

Nginx状态信息(status)配置及信息详解 nginx与php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助.为了后续的zabbix监控,我们需要先了解一下nginx的状态页. Nginx状态信息(status)介绍 Nginx软件在编译时又一个with-http_stub_status_module模块,这个模块功能是记录Nginx的基本访问状态信息,让使用者了解Nginx的工作状态.要想使用状态模块,在编译时必须增加--with-http_stub

Nginx错误日志(error_log)配置及信息详解

Nginx状态信息(status)配置及信息详解 nginx与php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助.为了后续的zabbix监控,我们需要先了解一下nginx的状态页. Nginx状态信息(status)介绍 Nginx软件在编译时又一个with-http_stub_status_module模块,这个模块功能是记录Nginx的基本访问状态信息,让使用者了解Nginx的工作状态.要想使用状态模块,在编译时必须增加--with-http_stub

使用HeartBeat实现高可用HA的配置过程详解

使用HeartBeat实现高可用HA的配置过程详解 一.写在前面 HA即(high available)高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务.常见的实现高可用的开源软件有 heartbeat 和 keepalived. 这样,一台 web 服务器一天24小时提供web服务,难免会存在 web 服务挂掉或服务器宕机宕机的情况,那么用户就访问不了服务了,这当然不是我们期望

reids配置参数详解

转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no  默认情况下, redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes daemonize yes #  当 redis 在后台运行的时候, Redis 默认会把 pid 文件放在 /var/run/redis.pid ,你可以配置到其他地址. #  当运行多个 redis 服务时,需要指定不同的 pid 文件和端口 pidfile /var/

Linux网络配置知识点详解

Linux网络配置知识点详解 一.Linux网络配置 1.网络配置文件 (1)/etc/sysconfig/network-scripts/ifcfg-en0xxx文件 用来指定服务器上的网络配置信息 (2)/etc/hostname文件 包含了Linux系统的主机名 (3)/etc/resolv.conf文件 文件配置了DNS客户,包含了主机的域名搜索顺序和DNS服务器地址 (4)/etc/hosts IP地址和主机名映射 (5)/etc/host.conf 和主机名解析顺序 (6)/etc/

CentOS7下Firewall防火墙配置用法详解

官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html#sec-Introduction_to_firewalld1 修改防火墙配置文件之前,需要对之前防火墙做好备份 重启防火墙后,需要确认防火墙状态和防火墙规则是否加载,若重启失败或规则加载失败,则所有请求都会被防火墙拦截 1 2 3 4 5 6 7