Apache httpd服务——常用配置

 

Apache httpd服务——常用配置_第1张图片

 

httpd 2.4 常用配置

yum安装后默认配置文件

 1 ~]# cat /etc/httpd/conf/httpd.conf
 2 ServerRoot "/etc/httpd"
 3 Listen 80
 4 Include conf.modules.d/*.conf
 5 User apache
 6 Group apache
 7 ServerAdmin root@localhost
 8 ServerName www.example.com:80
 9 
10     AllowOverride none
11     Require all denied
12 
13 DocumentRoot "/var/www/html"
14 
15     AllowOverride None
16     Require all granted
17 
18 
19     Options Indexes FollowSymLinks
20     AllowOverride None
21     Require all granted
22 
23 
24     DirectoryIndex index.html
25 
26 
27     Require all denied
28 
29 ErrorLog "logs/error_log"
30 LogLevel warn
31 
32     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
33     LogFormat "%h %l %u %t \"%r\" %>s %b" common
34     
35       LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
36     
37     CustomLog "logs/access_log" combined
38 
39 
40     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
41 
42 
43     AllowOverride None
44     Options None
45     Require all granted
46 
47 
48     TypesConfig /etc/mime.types
49     AddType application/x-compress .Z
50     AddType application/x-gzip .gz .tgz
51     AddType text/html .shtml
52     AddOutputFilter INCLUDES .shtml
53 
54 AddDefaultCharset UTF-8
55 
56     MIMEMagicFile conf/magic
57 
58 EnableSendfile on
59 IncludeOptional conf.d/*.conf

配置格式:directive value;directive 不区分字符大小写;value 为路径时,是否区分大小写,取决于文件系统。

1、显示服务器版本信息

ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full

ServerTokens Prod  #建议关闭显示服务器版本号

2、修改监听的IP和Port

Listen [ip:]port 省略ip表示本机所有IP都监听,至少要有一个监听,此指令可重复出现多次

Listen 80

3、持久连接

Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接

KeepAlive On  #启用长连接功能
KeepAliveTimeout 15  #保持连接15秒
MaxKeepAliveRequests 100  #断开条件

4、MPM多路处理模块

~]# httpd -M |grep mpm
 mpm_prefork_module (shared)  #默认prefork处理模式
~]# vim /etc/httpd/conf.modules.d/00-mpm.conf  #在此文件中配置使用那种处理模块
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so

5、DSO加载动态模块配置

配置指定实现模块加载格式: LoadModule

示例:

~]# vim /etc/httpd/conf.modules.d/00-base.conf
LoadModule auth_basic_module modules/mod_auth_basic.so

6、定义'Main' Server的文档页面路径

DocumentRoot "/path" 指向的路径为URL路径的起始位置

DocumentRoot "/var/www/html"

    Require all granted  #授权可以访问

7、定义站点主页面


    DirectoryIndex index.html index.php

8、站点访问控制常见机制

​ 基于文件系统路径:

  #控制文件夹
    ...


  #控制指定文件
    ...


  #支持正则表达式
    ...

​ 基于URL路径:

<Location  "">
    ...
Location>

<LocationMatch "PATTERN">
    ...
LocationMatch>

1)Options [+|-]option [[+|-]option] ... :后跟1个或多个以空白字符分隔的选项列表在选项前的 +,- 表示增加或删除指定选项,默认Options FollowSymlinks

  • Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户
  • FollowSymLinks:允许访问符号链接文件所指向的源文件
  • All:全部允许
  • None:全部禁用

2)AllowOverride All|None|directive-type [directive-type] ... :与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令;只对语句有效

  • All: 所有指令都有效
  • None:.htaccess 文件无效
  • AuthConfig Indexes 除了AuthConfig 和Indexes的其它指令都无法覆盖

3)Order Deny,Allow :定义生效次序;写在后面的表示默认法则,2.4版本不再支持

  • Allow from和Deny from:定义客户端地址,拒绝或允许

例:拒绝访问站点下所有以.conf结尾的文件

DocumentRoot "/data/website"

    Require all granted


    Require all denied

​ 例:允许访问符号链接文件所指向的源文件,但是不允许返回索引列表给用户


    Require all granted
    Options -Indexes +FollowSymLinks

9、中“基于源地址”实现访问控制

​ 不允许指定的主机访问

DocumentRoot "/data/website"

    
        Require all granted
        Require not ip 192.168.0.2  #不允许0.2的主机访问
    

​ 只允许指定主机访问

DocumentRoot "/data/website"

    
        Require all denied
        Require ip 192.168.0.2  #只允许0.2主机访问
    

10、日志设定

~]# vim /etc/httpd/conf/httpd.conf
ErrorLog "logs/error_log"  #错误日志记录文件
LogLevel warn  #默认warn级别的错误记录

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined  #默认日志记录方式

错误日志的 LogLevel 可选:debug, info, notice, warn, error,crit, alert, emerg

访问日志:

  • %h 客户端IP地址
  • %l 远程用户,启用mod_ident才有效,通常为减号“-”
  • %u 验证(basic,digest)远程用户,非登录访问时,为一个减号“-”
  • %t 服务器收到请求时的时间
  • %r First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本
  • %>s 响应状态码
  • %b 响应报文的大小,单位是字节;不包括响应报文http首部
  • %{Referer}i 请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的
  • %{User-Agent}i 请求报文中首部“User-Agent”的值;即发出请求的应用程序

建议:自定义日志记录格式


    LogFormat "%h %l %u %{%F %T}t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" custlog
    CustomLog "logs/access_log" custlog
</IfModule>

11、设定默认字符集

AddDefaultCharset utf-8  #设置默认字符集为utf-8,默认为AddDefaultCharset Off

    Require all granted
    AddDefaultCharset utf-8

12、定义路径别名

格式: Alias /URL/ "/PATH/"

Alias /web2 /data/website2

    Require all granted

访问:http://192.168.0.7/web2 则是访问/data/website 这个目录下的站点

13、基于用户的访问控制

允许账号文件中的所有用户登录访问:Require valid-user

例:基于单用户认证

​ 1)定义安全域

Alias /admin "/data/admin"
<Directory "/data/admin">
    AuthType Basic
    AuthName "please input your user and password!"
    AuthUserFile "conf.d/.htuser"
    Require user admin
Directory>

​ 2)提供账号和密码存储(文本文件)

~]# htpasswd -mc /etc/httpd/conf.d/.htuser admin
~]# cat /etc/httpd/conf.d/.htuser
admin:$apr1$Yfglmncl$BC1hebCpPjn1Sn.azt/Zu.
~]# systemctl restart httpd

​ 3)测试访问 :http://192.168.0.7/admin/,输入用户名密码即可访问

例:基于组账号进行认证

1)定义安全域

Alias /admin "/data/admin"
"/data/admin">
    AuthType Basic
    AuthName "please input your user and password!"
    AuthUserFile "conf.d/.htuser"
    AuthGroupFile "conf.d/.htgroup"
    Require group gadmin gadmin2

2)提供账号和密码存储(文本文件)

~]# htpasswd -c /etc/httpd/conf.d/.htuser tom
~]# htpasswd /etc/httpd/conf.d/.htuser jerry
~]# htpasswd /etc/httpd/conf.d/.htuser maria
~]# echo 'gadmin: tom jerry' > /etc/httpd/conf.d/.htgroup
~]# echo 'gadmin2: tom maria' >> /etc/httpd/conf.d/.htgroup

3)测试访问 :http://192.168.0.7/admin/,输入用户名密码即可访问

14、基于模块mod_userdir.so实现用户家目录的http共享

~]# vim /etc/httpd/conf.d/userdir.conf

    #UserDir disabled
    UserDir public_html


    AuthType Basic
    AuthName "user1 home dir"
    AuthUserFile "conf.d/.htuser"
    Require user user1

~]# htpasswd -c /etc/httpd/conf.d/.htuser user1
~]# systemctl restart httpd
~]# su -user1
~]$ mkdir public_html
~]$ echo "user1 home dir" > public_html/index.html
~]$ setfacl -m u:apache:x /home/user1/

访问:http://192.168.0.7/~user1/ 站点,输入密码即可登录

15、ServerSignature On | Off | EMail

​ 当客户请求的网页并不存在时,服务器将产生错误文档,如果于打开了ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版本等信息;如果不对外显示这些信息,就可以将这个参数设置为Off;设置为Email,将显示ServerAdmin 的Email提示;2.4版本默认值关闭,2.2版本默认开启

16、status页面

LoadModule status_module modules/mod_status.so 确认此模块已加载

httpd]# vim conf.d/myhttp.conf

    SetHandler server-status
    Require all granted

~]# systemctl restart httpd

访问http://192.168.0.7/status查看服务器状态信息

  • "**_**" Waiting for Connection 等待的连接
  • "S" Starting up
  • "R" Reading Request
  • "W" Sending Reply 有回应的连接
  • "K" Keepalive (read)
  • "D" DNS Lookup
  • "C" Closing connection
  • "L" Logging
  • "G" Gracefully finishing
  • "I" Idle cleanup of worker
  • "." Open slot with no current process 空闲sock个数

17、虚拟主机

注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机;注释中心主机的DocumentRoot指令即可。

2.4版本基于FQDN的虚拟主机不再需要NameVirutalHost指令

data]# mkdir website{1..3}
data]# echo '

website 1

' > website1/index.html
data]# echo '

website 2

' > website2/index.html
data]# echo '

website 3

' > website3/index.html
~]# vim /etc/httpd/conf/httpd.conf #Listen 80 #DocumentRoot "/var/www/html"

三种实现方案:

  • 基于PORT:为每个虚拟主机使用至少一个独立的PORT
~]# vim /etc/httpd/conf.d/virtualhost.conf
Listen 81
Listen 82
Listen 83

    Require all granted

81>
    DocumentRoot "/data/website1"
    ServerName www.web1.com
    ErrorLog "logs/web1_error_log"
    TransferLog "logs/web1_access_log"

82>
    DocumentRoot "/data/website2"
    ServerName www.web2.com
    ErrorLog "logs/web2_error_log"
    TransferLog "logs/web2_access_log"

83>
    DocumentRoot "/data/website3"
    ServerName www.web3.com
    ErrorLog "logs/web3_error_log"
    TransferLog "logs/web3_access_log"

~]# systemctl restart httpd

分别访问:http://192.168.0.7:81 和 http://192.168.0.7:82 和 http://192.168.0.7:83

  • 基于IP:为每个虚拟主机准备至少一个IP地址
~]# ip a a 192.168.0.11/24 dev eth0
~]# ip a a 192.168.0.12/24 dev eth0 
~]# ip a a 192.168.0.13/24 dev eth0 
~]# vim /etc/httpd/conf.d/virtualhost.conf
Listen 80

    Require all granted

192.168.0.11:80>
    DocumentRoot "/data/website1"
    ServerName www.web1.com
    ErrorLog "logs/web1_error_log"
    TransferLog "logs/web1_access_log"

192.168.0.12:80>
    DocumentRoot "/data/website2"
    ServerName www.web2.com
    ErrorLog "logs/web2_error_log"
    TransferLog "logs/web2_access_log"

192.168.0.13:80>
    DocumentRoot "/data/website3"
    ServerName www.web3.com
    ErrorLog "logs/web3_error_log"
    TransferLog "logs/web3_access_log"

~]# systemctl restart httpd

分别访问:192.168.0.11192.168.0.12192.168.0.13

  • 基于FQDN:为每个虚拟主机使用至少一个FQDN
~]# vim /etc/httpd/conf.d/virtualhost.conf
Listen 80

    Require all granted

80>
    DocumentRoot "/data/website1"
    ServerName www.web1.com
    ErrorLog "logs/web1_error_log"
    TransferLog "logs/web1_access_log"

80>
    DocumentRoot "/data/website2"
    ServerName news.web2.com
    ErrorLog "logs/web2_error_log"
    TransferLog "logs/web2_access_log"

80>
    DocumentRoot "/data/website3"
    ServerName bbs.web3.com
    ErrorLog "logs/web3_error_log"
    TransferLog "logs/web3_access_log"

~]# systemctl restart httpd

客户端测试:

~]# vim /etc/hosts  添加以下内容
192.168.0.7 www.web1.com news.web2.com bbs.web3.com
~]# curl www.web1.com
~]# curl news.web2.com
~]# curl bbs.web3.com

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

LoadModule deflate_module modules/mod_deflate.so 模块默认已经加载

# httpd -M |grep deflate
 deflate_module (shared)
conf.d]# vim myhttpd.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
DeflateCompressionLevel 9  #压缩比为 9

19、启用Sendfile功能

~]# vim /etc/httpd/conf/httpd.conf
EnableSendfile On

 

转载于:https://www.cnblogs.com/Gmiaomiao/p/9220813.html

你可能感兴趣的:(Apache httpd服务——常用配置)