httpd-2.2 配置及用法完全攻略

2022-12-19 0 687

apache是这款平衡的盛行的web应用软件,是linux作业系统中预设的web管理工具。在RHEL/Centos系列产品中能用rpm间接展开加装,服务项目名叫httpd。apache有许多增设和Listary 的注意事项,上面的该文将带你玩爆带你畅享apache,畅享httpd

1、窃听的套传输层

Listen [IP:]port

此命令能再次出现数次, 用作选定窃听数个相同的套传输层:

Listen 80

Listen 192.168.1.116:8080

2、命令行中采用的 keep alive

现阶段绝大多数的应用程序都允诺伺服器维持稳步相连,此种机能就称作“KeepAlive”,它是HTTP1.1中的国际标准技术国际标准,通常是用以加强服务项目器的操控性。在采用维持相连机能时,增设顾客一场允诺相连能负面影响文档的最小下限,提议把预设值设为ON,以期提升出访操控性。但当采用阻抗平衡时,会负面影响阻抗平衡的效用,在未断开相连以后,同义词应用程序仍旧被或非到同一个台伺服器。

KeepAlive {On|Off}

KeepAliveTimeout 2 #延时天数

MaxKeepAliveRequests 50 #长相连最小允诺数

3、MPM

#认定组件与否存有 StartServers: 预设开启的组织工作民主化数; #不主要包括主民主化,主民主化而已负责管理子民主化的建立拆解等 MinSpareServers: 最多空余民主化数; MaxSpareServers: 最小空余民主化数; ServerLimit: 最小活动民主化数; MaxClients: 并发允诺的最小数; #允诺相连进来不一定会活动,要小于等于serverlimit MaxRequestsPerChild: 每个子民主化在生命周期内所能够服务项目的最多允诺个数;

StartServers:开启的子民主化的个数 MaxClients: 并发允诺的最小数; MinSpareThreads:最小空余线程数; MaxSpareThreads:最小空余线程数; ThreadsPerChild:每个子民主化可生成的线程数; MaxRequestsPerChild:每个子民主化在生命周期内所能够服务项目的最多允诺个数,0表示不限定;

4、DSO模块加载方式

LoadModule module_name /path/to/module

如果采用相对路径,则对于ServerRoot所定义的位置而言;例如:

LoadModule php5_module /usr/lib64/httpd/modules/php5.so

让服务项目重载命令行方能生效;

httpd -M: 列出已经装载的所有DSO及非DSO组件

httpd -l: 列出支持采用的非DSO组件

预设采用prefork组件,若想采用worker,则修改脚本命令行:

[root@localhost conf]# vim /etc/sysconfig/httpd

#HTTPD=/usr/sbin/httpd.worker #启用此项,修改所采用的二进制程序

5、实用性站点根目录

DocumentRoot /path/to/somewhere

Apache伺服器存放网页的路径,预设所有要求提供HTTP服务项目的连接,都以这个目录为主目录,预设为 /var/www/html。

6、实用性页面出访属性

Options: Indexes: 缺少选定的预设页面时,允许将目录中的所有文档以列表形式返回给用户,危险; FollowSymLinks: 允许跟随符号链接所指向的原始文档; None: 所有都不启用; All: 所有都启用; ExecCGI: 允许采用mod_cgi组件执行CGI脚本; Includes: 允许使用mod_include组件实现伺服器端包含(SSI); MultiViews:允许采用mod_negotiation实现内容协商; SymLinksIfOwnerMatch:在链接文档属主属组与原始文档的属主属组相同时,允许跟随符号链接所指向的原始文档;

能实用性网站目录下的出访属性,采用

~ “path”>能基于正则表达式的匹配,但是通常不提议采用,会耗费天数。类似的命令还有:

[~] “”>: 实用性URL出访属性,与

相似(能实用性像内生的status页面或者定义了别名的路径等);

[~] “”> : 限定单个文档的出访属性;

: 相当于Location ~ ,但通常提议采用此实用性展开正则匹配;

如果某要实用性其属性的URL能映射到某具体文档系统路径,提议采用。

7、基于主机的出访控制

Options AllowOverride None #AllowOverride表示以下基于ip的出访控制与否被禁用,none表示不被禁用 Order Deny,Allow #后面的表示预设规则 Allow Deny

基于IP控制:

Allow from

Deny from

IP, Network Address

172.16

172.16.0.0

172.16.0.0/16

172.16.0.0/255.255.0.0

二者都匹配或二者都无匹配项时,则以后者为准;否则,则以匹配到的为准;

8、定义预设主页面

DirectoryIndex index.php index.html home.html default.html #自左而右依次找

9、用户主页

如果期望让每个用户都能建立个人站点:http://Server_IP/~Username/

userdir disablied: 禁止

userdir public_html:public_html是用户家目录下的目录名称,所有位于此目录中的文档均可通过前述的出访路径展开出访

实用性用户主页示例:

[root@localhost conf]# vim httpd.conf #首先在命令行中启用以下选项

366 #UserDir disabled

367

368 UserDir public_html

[root@localhost httpd]# service httpd reload

[root@localhost conf]# useradd feiyu

[root@localhost conf]# su – feiyu

[feiyu@localhost ~]$ mkdir public_html

[feiyu@localhost ~]$ cd public_html/

[feiyu@localhost public_html]$ echo “hello feiyu” > index.html

此时能出访了。但apache用户没有权限读取文档,所以还得定义出访权限

[feiyu@localhost ~]$ ls -ld /home/feiyu/

drwx——. 6 feiyu feiyu 4096 Feb 15 20:42 /home/feiyu/

[feiyu@localhost ~]$ setfacl -m u:apache:x /home/feiyu/

[feiyu@localhost ~]$ getfacl /home/feiyu/

getfacl: Removing leading / from absolute path names

# file: home/feiyu/

# owner: feiyu

# group: feiyu

user::rwx

user:apache:–x

group::—

mask::–x

other::—

[feiyu@localhost ~]$ curl 192.168.1.117/~feiyu/

hello feiyu

10、配置日志机能

预设日志目录:/var/log/httpd/

access.log: 出访日志,其需要记录的内容需要自定义

error.log: 错误日志

出访日志:CustomLog “/path/to/access_log_file” Format_Name #CustomLog自定义出访日志路径LogFormat Format_String Format_Name

%h: 应用程序地址

%l: 远程登录名,通常为-

%u: 认证时的远程用户名,没有认证时为-

%t: 收到允诺时的天数;

%r: 允诺报文的起始行;

%>s: 响应状态码;

%b: 响应报文的长度,单位为字节

%{Header_Name}i: 记录选定请求报文首部的内容(value);

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

错误日志:ErrorLog

11、路径别名

Alias /alias/ “/path/to/somewhere/”

意味着出访http://Server_IP/alias/时,其页面文档来自于/path/to/somewhere这个位置;

注意:前后路径要一致,结尾都有”/”或者都没有

12、设定预设字符集

AddDefaultCharset UTF-8

定义cgi脚本路径别名:

CGI: Common Gateway Interface协议(执行某些文档时要以管理员的权限执行,已经很少被采用了)

13、CGI脚本路径别名

CGI: Common Gateway Interface协议(执行某些文档时要以管理员的权限执行,已经很少被采用了)

定义cgi脚本路径别名:

ScriptAlias /URL/ “/path/to/somewhere/” #采用此种方法定义文档则被采用cgi协议执行或者显式采用execcgi

14、基于用户的出访控制

当你的网站或者站点的某个路径只想让你授权的用户出访时,就能采用基于用户的出访控制。

虚拟用户:能采用文档,SQL数据库或者ldap等机制展开认证。认证类型(auth):basic: 基本认证,帐号和密码明文发送;

digest:摘要认证,hash编程之后发送,大多应用程序不支持;

认证提供者(authentication provider):帐号和密码的存放位置

授权机制(authorization):根据什么展开授权

例:基于文档,做基本认证,根据用户和组展开授权

采用htpasswd命令生成认证库

htpasswd:

-c #第一场采用-c建立新文档,不是第一场不要采用此选项

-m #用户密码采用MD5加密后存放

-s #用户密码采用SHA加密后存放

-p #用户密码不加密

-d #禁用一个账户

-e #启用一个账户

[root@localhost fin]# htpasswd -c -m /etc/httpd/conf/.htpasswd feiyu #第一场需要采用-c选项建立文档

New password:

Re-type new password:

Adding password for user feiyu

[root@localhost fin]# htpasswd -m /etc/httpd/conf/.htpasswd feiyu1

New password:

Re-type new password:

Adding password for user feiyu1

实用性认证机制

Options None AllowOverride AuthConfig AuthType Basic AuthName “Private Area” #AuthBasicProvider file #能不用指,预设为文档 AuthUserFile /etc/httpd/conf/.htpasswd #所采用的认证文档 Require valid-user #允许文档中的所有合法账号

出访界面如下所示:

httpd-2.2 配置及用法完全攻略

基于组展开认证

先建立用户再建立组文档:

组文档格式:

组名: 用户1 用户2 用户3

Options None AllowOverride AuthConfig AuthType Basic AuthName “Private Area” #AuthBasicProvider file AuthUserFile /etc/httpd/conf/.htpasswd AuthGroupFile /etc/httpd/conf/.htgroup #所采用的组文档 Require group GroupName

15、虚拟主机

虚拟主机意即一个物理伺服器提供数个站点,以前刚建站时采用的是阿里云的免费虚拟主机,我想应该就是基于此方法实用性的。虚拟主机的实现方法有三种:

基于相同的IP实现相同的虚拟主机:变化IP

基于相同的port实现相同的虚拟主机:变化port

基于相同的FQDN实现相同的虚拟主机:变化ServerName的参数

实用性采用虚拟主机:

(1)注释中心主机,并启用相关实用性

[root@localhost http]# vim /etc/httpd/conf/httpd.conf

DocumentRoot “/var/www/html” #注释中心主机

NameVirtualHost *:80 #采用基于域名的虚拟主机时需要开启此项,并且上面的实用性与其维持一致,在 httpd-2.4 中不需要采用

(2)基于ip的虚拟主机:

ServerName www.feiyu1.com DocumentRoot “/var/www/html/feiyu1”

ServerName www.feiyu2.com DocumentRoot “/var/www/html/feiyu2”

(3)基于端口的虚拟主机:

192.168.1.117:80> ServerName www.feiyu1.com DocumentRoot “/var/www/html/feiyu1”

192.168.1.117:8080> ServerName www.feiyu2.com DocumentRoot “/var/www/html/feiyu2”

(4)基于域名的虚拟主机:

NameVirtualHost *:80

ServerName www.feiyu1.com DocumentRoot “/var/www/html/feiyu1” CustomLog “/var/log/httpd/feiyu1-access_log” combined

ServerName www.feiyu2.com DocumentRoot “/var/www/html/feiyu2” CustomLog “/var/log/httpd/feiyu2-access_log” combined

16、启用 https 协议

https是在http的基础上展开ssl/tls加密实现的结果,启用https固然更安全,不会存有流量劫持等风险,但采用https就不再是三次握手了,它会增加建立相连的天数。

http与https首次允诺对比图:

httpd-2.2 配置及用法完全攻略

httpd-2.2 配置及用法完全攻略

http: 文本协议,80/tcphttps: 二进制格式的协议, 443/tcpSSL握手要完成的组织工作:

交换协议版本号

选择双方都支持的加密方式

对两端实现身份验正

密钥交换

SSL会话基于IP地址展开,不支持在基于FQDN的虚拟主机上实现,所以在只有一个公网IP的伺服器上采用虚拟主机时,只能为一个站点采用https。

实用性支持https:

(1)加装httpd支持ssl组件

[root@localhost ~]# yum install mod_ssl -y

(2)自建CA

[root@localhost ~]# cd /etc/pki/CA

[root@localhost ~]# (umask 077; openssl genrsa -out private/cakey.pem 2048)

[root@localhost ~]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

(3)生成私钥

[root@localhost ~]# cd /etc/httpd/conf/

[root@localhost ~]# mkdir ssl

[root@localhost ~]# cd ssl

[root@localhost ~]# (umask 077; openssl genrsa -out httpd.key 1024)

(4)生成证书申请

[root@localhost ~]# openssl req -new -key httpd.key -out httpd.csr

(5)CA签署证书

[root@localhost ~]# openssl ca -in httpd.csr -out httpd.crt -days 365

(6)修改httpd的ssl命令行

[root@localhost ~]# vim /etc/httpd/conf.d/ssl.conf

DocumentRoot “/var/www/html/feiyu1”

ServerName www.feiyu.com

SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key

(7)验证导入应用程序

验证,能采用以下命令展开验证或者将证书导入到应用程序并展开出访:

# openssl s_client -connect IP:port -CAfile /path/to/CA_certificate_file

17、伺服器status页面

status页面是httpd内生的,且此信息能通过web予以显示,此信息是关于伺服器的运行状态的所以不能对所有人都显示。

[root@localhost html]# vim /etc/httpd/conf/httpd.conf

SetHandler server-statusAuthType BasicAuthName “Server Status”AuthUserFile “/etc/httpd/conf/.htpasswd”Require valid-userOrder deny,allowAllow from all

SetHandler: 显式的定义采用的处理器 ,是当文档被调用时,Apache内部表示形式;通常每种文档类型都有其隐式处理器;

18、采用mod_deflate组件压缩页面优化传输速度

通常当CPU多空余,带宽压力大时才会启用压缩,启用压缩不但能优化传输速度也能节约带宽,但是其一个弊端就是会使缓存的命中率下降。

[root@localhost html]# vim /etc/httpd/conf/httpd.conf

SetOutputFilter DEFLATE #启用deflate

[root@localhost conf.d]# vim deflate.conf

# Restrict compression to these MIME types 定义要压缩的文档类型

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE application/xhtml+xml

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE text/javascript

AddOutputFilterByType DEFLATE text/css

# Level of compression (Highest 9 – Lowest 1)

DeflateCompressionLevel 9 #压缩比,预设为6

# Netscape 4.x has some problems.

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

# Netscape 4.06-4.08 have some more problems

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

# MSIE masquerades as Netscape, but it is fine

BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

19、资源限定

软限制:能超出的限制,但仅超出一定时长;

硬限制:绝对不能超出的限制

采用 ulimit 能修改软限制:

-n [N]: 显示或限定能打开的最小的文档句柄数;

-u [N]: 所能够运行的最多民主化数;

其相对应的命令行为:/etc/security/limits.conf,扩展实用性:/etc/security/limits.d/*.conf

root@tianfeiyu # vim /etc/security/limits.conf #设定硬限制

apache hard nofile 65535 #设定能打开的最小文档数

apache hard nproc 30000#设定能打开的最小民主化数

20、httpd程序包自带的工具介绍

httpd:Apache 伺服器。

apachectl:Apache HTTP 伺服器控制工具。

ab:Apache HTTP 伺服器操控性基准工具。

apxs:Apache 扩展工具。

configure:实用性源代码。

dbmmanage:为基本认证建立和更新 DBM 格式的用户认证文档。

htcacheclean:清理磁盘缓存。

htdigest:为摘要认证建立和更新用户认证文档。

htdbm:操作 DBM 密码数据库。

htpasswd:为基本认证建立和更新用户认证文档。

httxt2dbm:为 RewriteMap 建立 dbm 文档。

logresolve:将 Apache 日志文档中的 IP 地址解析到主机名称。

rotatelogs:不关闭 Apache 而切换日志文档。

suexec:执行外部程序前切换用户。

运行目录:/etc/httpd

命令行:

主实用性:/etc/httpd/conf/httpd.conf

扩展实用性:/etc/httpd/conf.d/*.conf

Socket: 80/tcp, 443/tcp

文档根目录:/var/www/html

CGI目录:/var/www/cgi-bin/

MPM(Multipath Processing Module):多道处理组件,非一个组件,而是对一种特性的称谓

多民主化模型 prefork: 一个民主化响应一个允诺(主民主化建立民主化响应)

多线程模型 worker: 一个主民主化数个子民主化,一个民主化生成数个线程,一个线程响应一个允诺,一个民主化生成的线程数有限

事件模型 event: 一个线程响应数个允诺,基于事件驱动机制来维持数个用户允诺;

event-driven: 事件驱动,主要目的在于实现单线程响应数个允诺;

httpd实用性目录信息:服务项目脚本:/etc/rc.d/init.d/httpd脚本命令行:/etc/sysconfig/httpd

高度组件化:DSO(Dynamic Shared Object)动态化装饰组件

MPM(Multipath Processing Module):多道处理组件,非一个组件,而是对一种特性的称谓

原文来自:http://www.tianfeiyu.com/?p=1859本文地址:https://www.linuxprobe.com/httpd-2-configure.html编辑:陶武杰,审核员:冯振华

本文原创地址:https://www.linuxprobe.com/httpd-2-configure.html

httpd-2.2 配置及用法完全攻略

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务