Web服务(二)httpd配置参数详细介绍

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一、配置文件和基本格式

配置文件路径:/etc/httpd/conf/httpd.conf

配置参数    值

   1、配置指令不区分字符大小写;但是值有可能区分字符大小写

   2、有些指令可以重复出现多次

配置文件格式:

   1、全局配置

   2、主机配置:用于仅提供一个站点

   3、虚拟主机:用于提供多个站点(和主机配置不能同时生效)

配置文件语法测试:{service httpd configtest | httpd -t}



二、详细配置

1、监听套接字

1
2
3
4
5
#配置文件事例
#Listen 12.34.56.78:80
Listen  80
Listen  8080
Listen  192.168 . 1.110 : 8082

此指令可以出现多次;用于指定监听多个不同的套接字:

1
2
3
4
5
6
7
8
9
10
11
12
[Linux] #httpd -t
Syntax OK
[Linux] #service httpd reload
Reloading httpd:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
[Linux] #ss -tnl
State      Recv - Q Send - Q                     Local Address:Port                       Peer Address:Port
LISTEN      0       128                                    ::: 111                                   ::: *
LISTEN      0       128                                     * : 111                                    * : *
LISTEN      0       128                                    ::: 8080                                  ::: *
LISTEN      0       128                                    ::: 80                                    ::: *
LISTEN      0       128                         192.168 . 1.186 : 8082                                   * : *


2、配置使用Keep Alive

1
2
3
4
5
6
7
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
#KeepAlive On
KeepAlive Off
MaxKeepAliveRequests  100  #持久连接最大请求数
KeepAliveTimeout  15  #超时时间


3、多道处理模块MPM

查看系统默认启用的模块

1
2
3
4
5
6
7
8
9
10
[Linux] #httpd -l
Compiled  in  modules:
   core.c
   prefork.c  #默认启用prefork模块
   http_core.c
   mod_so.c
[Linux] #
#如需启用worker模块;需要更改配置文件
[Linux] #vi /etc/sysconfig/httpd
#HTTPD=/usr/sbin/httpd.worker #启用该项后重启httpd

配置模块信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[Linux] #vi /etc/httpd/conf/httpd.conf
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
prefork 稳定性较好,一个线程崩溃不会影响其他线程
<IfModule prefork.c> 判断prefork模块是否存在
StartServers        8  默认启动的工作进程数;不包含主进程
MinSpareServers     5  最少空闲进程数
MaxSpareServers    20  最大空闲进程数
ServerLimit       256  最大活动进程数
MaxClients        256  最多允许发起的请求的个数
MaxRequestsPerChild   4000  每个子进程在生命周期内所能够服务的最多请求个数
< / IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
worker 多个进程;一个进程崩溃会影响其下的其他线程
<IfModule worker.c> 判断worker模块是否存在
StartServers          4  启动的子进程的个数
MaxClients          300  并发请求的最大个数
MinSpareThreads      25  最少空闲线程数
MaxSpareThreads      75  最大空闲线程数
ThreadsPerChild      25  每个子进程可生成的线程数
MaxRequestsPerChild   0  每个子进程在生命周期内所能够服务的最多请求个数; 0 表示不做限定
< / IfModule>

4、DSO模块的加载方式

LoadModule module_name /path/to/module

可以使用相对路径和绝对路径;相对路径则对于ServerRoot所定义的位置而言;

更改完成后service httpd reload可生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# LoadModule foo_module modules/mod_foo.so
#
LoadModule auth_basic_module modules / mod_auth_basic.so
LoadModule auth_digest_module modules / mod_auth_digest.so
LoadModule authn_file_module modules / mod_authn_file.so
LoadModule authn_alias_module modules / mod_authn_alias.so
LoadModule authn_anon_module modules / mod_authn_anon.so
#
#
[Linux] #httpd -M #可以查看系统所有装载模块
Loaded Modules:
  core_module (static)
  mpm_prefork_module (static)
  http_module (static)
  so_module (static)
  auth_basic_module (shared)
  auth_digest_module (shared)
  authn_file_module (shared)
  authn_alias_module (shared)


5、配置站点根目录和页面属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 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"
DocumentRoot  "/path/to/somewhere(站点路径)"  #格式
# The Options directive is both complicated and important.  Please see 下述站点有配置详细说明
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
<Directory  "/var/www/html" #页面访问属性
#
#
     Options Indexes FollowSymLinks
#
#
#
Indexes 缺少默认页面时;允许将目录中的所有文件已列表形式返回给用户
FollowSymLinks 允许跟随符号链接所指向的原始文件;危险
None  所有都不启用
All  所有都启用
ExecCGI 是否允许使用mod_cgi模块执行CGI脚本
Includes 是否允许使用mod_include模块实现服务器端包含(SSI)
MultiViews 允许使用mod_negotiation实现内容协商
SymLinksIfOwnerMatch 在链接文件属主属组与原始文件的属主属组相同时;允许跟随符号链接所指向的原始文件
#
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
基于主机的访问控制
#
#
     AllowOverride  None  表示下面这些控制机制是否被禁用; None 表示不被禁用
#
# Controls who can get stuff from this server.
#
     #allow允许;deny不允许
     Order allow,deny  #默认deny;没有allow的都deny;可以写多条;自上而下匹配
     Allow  from  all  格式: from  IP
     Deny
     #二者都匹配或二者都无匹配项时,则以后者为准;否则,则以匹配到的为准
< / Directory>
#最佳匹配:从列表中找出最小的能匹配到访问者的地址的条目为最终是生效的
#详细参考http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow


6、定义默认主页面

1
2
3
4
5
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents.  The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var  #自左而右依次查找


7、用户目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
权限说明
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
#
# See also: http://httpd.apache.org/docs/misc/FAQ.html#forbidden
#
<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
     disabled 禁止
     UserDir public_html 用户家目录下的目录名称,所有位于此目录中的文件均可通过前述的访问路径进行访问;用户的家目录的赋予运行httpd进程的用户拥有执行权限;
     #
     # 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
< / IfModule>


8、配置日志功能

/var/log/httpd/access.log && error.log

access.log:其需要记录的内容需要自定义

访问日志:

   CustomLog "/path/to/access_log_file" Format_Name
   LogFormat Format_String Format_Nam

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
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:客户端地址
% l:远程登录名;通常为 -
% u:认证时的远程用户名;通常为 -
% t:接受到请求时的时间;
% r:请求报文的起始行;
% >s:响应状态码;
% b:响应报文的长度;单位字节;不包含HTTP首部
% {Header_Name}i:记录指定请求报文首部的内容(value)
% U:请求的URL;不包含其他任何请求串
#
#具体请参照http://httpd.apache.org/docs/2.2/mod/mod_log_config.html
#
# 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


9、路径别名和默认字符集

Alias /alias/ "/path/to/somewhere/" :前面别名结尾有/后面结尾就一定得有/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# We include the /icons/ alias for FancyIndexed directory listings.  If you
# do not use FancyIndexing, you may comment this out.
#
Alias  / icons /  "/var/www/icons/"
#
#
#字符集
# Specify a default charset for all content served; this enables
# interpretation of all content as UTF-8 by default.  To use the
# default browser choice (ISO-8859-1), or to allow the META tags
# in HTML content to override this choice, comment out this
# directive:
#
AddDefaultCharset UTF - 8



10、CGI脚本路径别名

URL --> FileSystem Directory

CGI:Common Gateway Interface

有很多机制需要SUID或SGID权限;

httpd无法直接执行脚本;基于CGI协议调用脚本解释器;等待脚本解释器返回结果到web服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias  / cgi - bin /  "/var/www/cgi-bin/"
ScriptAlias  / URL /  "/path/to/somewhere/"  #格式;路径需要执行权限
#
#测试
cat << EOF
Content - Type : text / html
<pre>
The hostname  is :`hostname`.
The time  is :`date`.
< / pre>
EOF


11、基于用户的访问控制

虚拟用户:不是系统的账号密码;

在配置文件LoadModule下(auth)开头的认证类型:

   basic:基本认证;账号和密钥明文发送;

   digest:摘要认证;hash编程之后发送

认证提供者(authentication provider):账号和密钥的存放位置(authn)

授权机制(authentication):根据什么进行授权(authz)

1、编辑配置文件使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Linux] #vi /etc/httpd/conf/httpd.conf
#在<Directory>网站附近下找一个位置新建一个
<Directory  "/var/www/html/fin" #指定目录文件
         Options  None  #没有任何选项
         AllowOverride AuthConfig  #使用认证配置
         AuthType Basic  #认证类型
         AuthName  "Private Area"  #质询时窗口标题
#       AuthBasicProvider file #认证提供者;默认为文件
         AuthUserFile  / etc / httpd / conf / .htpasswd  #指定文件存放用户账号
#       AuthGroupFile /etc/httpd/conf/.htgroup #指定文件存放组
#       Require group GroupName #指定组名
         Require valid - user  #所有的合法账户
< / Directory>

2、使用htpasswd命令生成认证库

1
2
3
4
5
6
7
8
9
[Linux] #htpasswd -b /etc/httpd/conf/.htpasswd pipi pipi
Adding password  for  user pipi
[Linux] #
详细参数可以man htpasswd
SYNOPSIS
        htpasswd [  - c ] [  - m ] [  - D ] passwdfile username
        htpasswd  - b [  - c ] [  - m |  - d |  - p |  - s ] [  - D ] passwdfile username password
        htpasswd  - n [  - m |  - d |  - s |  - p ] username
        htpasswd  - nb [  - m |  - d |  - s |  - p ] username password

wKioL1MpmeOizcX-AADiKRb9vfw638.jpg

wKiom1Mpmh2yO9K8AACL6ZXKNPo593.jpg

12、虚拟主机

一个物理服务器提供多个站点;使用虚拟主机得先取消中心主机

1、基于不同的IP实现不同的虚拟

  使用不同IP;

2、基于不同的port实现不同的虚拟主机

  使用不同端口

3、基于不同的FQDN实现不同的虚拟主机

  使用不同的ServerName的值:FQDN

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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" #这项需要先注释;中心主机
#
#基于主机名不同进行测试;下面这项需要开启;IP和port是不需要开启的
NameVirtualHost  * : 80
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost  * : 80 >
     ServerAdmin webmaster@pipi.com
     DocumentRoot  / var / www / docs / pipi  #指定站点路径
     ServerName www.pipi.com  #指定FQDN
     ErrorLog logs / pipi.com - error_log  #指定错误日志路径及名称
     CustomLog logs / pipi.com - access_log common  #指定访问日志路径及名称
< / VirtualHost>
<VirtualHost  * : 80 >
     ServerAdmin webmaster@soul.org
     DocumentRoot  / var / www / docs / soul
     ServerName www.soul.org
     ErrorLog logs / soul.org - error_log
     CustomLog logs / soul.org - access_log common
< / VirtualHost>
<VirtualHost  * : 80 >
     ServerAdmin webmaster@dark.net
     DocumentRoot  / www / docs / dark
     ServerName www.dark.net
     ErrorLog logs / dark.net - error_log
     CustomLog logs / dark.net - access_log common
< / VirtualHost>
#
#配置完成后需要在对应的路径下建立相应的文件
[Linux] #httpd -t
Syntax OK
[Linux] #service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[Linux] #

配置完成后如在linux下测试则修改/etc/hosts文件;windows下修改C:\Windows\System32\drivers\etc\hosts文件


1
2
3
X.X.X.129 www.pipi.com
X.X.X.129 www.soul.org
X.X.X.129 www.dark.net

修改完成后直接访问即可。

1
2
3
4
5
6
#查看日志文件
[Linux] #cd /var/log/httpd/
[Linux] #ls
access_log           dark.net - access_log  error_log           pipi.com - access_log  soul.org - access_log
access_log - 20140309   dark.net - error_log   error_log - 20140309   pipi.com - error_log   soul.org - error_log
[Linux] #


本文转自Mr_陈 51CTO博客,原文链接:http://blog.51cto.com/chenpipi/1379923,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5月前
|
XML JSON 数据安全/隐私保护
Web服务
【10月更文挑战第18天】Web服务
91 9
|
1月前
|
数据采集 Web App开发 API
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
本文介绍了如何使用FastAPI和Selenium搭建RESTful接口,访问免版权图片网站Pixabay并采集图片及其描述信息。通过配置代理IP、User-Agent和Cookie,提高爬虫的稳定性和防封禁能力。环境依赖包括FastAPI、Uvicorn和Selenium等库。代码示例展示了完整的实现过程,涵盖代理设置、浏览器模拟及数据提取,并提供了详细的中文注释。适用于需要高效、稳定的Web数据抓取服务的开发者。
116 15
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
|
5月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
93 4
|
1月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
80 7
|
5月前
|
XML JSON 安全
Web服务是通过标准化的通信协议和数据格式
【10月更文挑战第18天】Web服务是通过标准化的通信协议和数据格式
222 69
|
4月前
|
Go UED
Go Web服务中如何优雅平滑重启?
在生产环境中,服务升级时如何确保不中断当前请求并应用新代码是一个挑战。本文介绍了如何使用 Go 语言的 `endless` 包实现服务的优雅重启,确保在不停止服务的情况下完成无缝升级。通过示例代码和测试步骤,详细展示了 `endless` 包的工作原理和实际应用。
99 3
|
4月前
|
JSON Go UED
Go Web服务中如何优雅关机?
在构建 Web 服务时,优雅关机是一个关键的技术点,它确保服务关闭时所有正在处理的请求都能顺利完成。本文通过一个简单的 Go 语言示例,展示了如何使用 Gin 框架实现优雅关机。通过捕获系统信号和使用 `http.Server` 的 `Shutdown` 方法,我们可以在服务关闭前等待所有请求处理完毕,从而提升用户体验,避免数据丢失或不一致。
56 1
|
4月前
|
JavaScript 前端开发 开发工具
web项目规范配置(husky、eslint、lint-staged、commit)
通过上述配置,可以确保在Web项目开发过程中自动进行代码质量检查和规范化提交。Husky、ESLint、lint-staged和Commitlint共同作用,使得每次提交代码之前都会自动检查代码风格和语法问题,防止不符合规范的代码进入代码库。这不仅提高了代码质量,还保证了团队协作中的一致性。希望这些配置指南能帮助你建立高效的开发流程。
154 5
|
4月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
5月前
|
XML JSON 安全
定义Web服务
【10月更文挑战第18天】定义Web服务
117 12

热门文章

最新文章