httpd 的设置 二

httpd 的设置 二

1. 日志的设置

1.1 日志类型:
  • 访问日志
  • 错误日志
1.2 日志的设置
  • 错误日志:ErrorLog

    默认设置

    ErrorLog "logs/error_log"(日志的相对位置)
    LogLevel warn  (日志记录的级别)
    

    LogLevel 可选值: debug, info, notice, warn,error, crit, alert, emerg

  • 访问日志

    1. 日志的格式

      在 中定义了 日志的记录格式 logformat,默认的 两种comon 和combined

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

      使用日志格式,指定格式名字即可

      CustomLog "logs/access_log" combined  
      
    2. 日志格式中的参数

      参考帮助: http://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats

      • %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”的值;即发出请求的应用程序”

2. 定义路径别名

格式:Alias /URL/ “/PATH/”
例子:

当用户访问 192.168.0.3/aa 时,我给他跳转到 /data/bbs 目录

[root@node1 asite]# mkdir /data/bbs -p
[root@node1 asite]# echo "this 103:/data/bbs" > /data/bbs/index.html
[root@node1 asite]# systemctl restart  httpd

conf

alias /aa "/data/bbs/"
<directory "/data/bbs">                                                                                                                     
Require all granted
</directory>

测试

[root@node1 asite]# curl 192.168.0.3/aa/
this 103:/data/bbs

3.基于用户的访问控制

和认证相关的概念:
  • 认证质询:WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码

  • 认证:Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源

  • 认证方式两种:

    • basic:明文
    • digest:消息摘要认证,兼容性差
  • 安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因

  • 用户的账号和密码

    • 虚拟账号:仅用于访问某服务时用到的认证标识
    • 存储账号和密码的方式:文本文件,SQL数据库,ldap目录存储,nis等
basic认证配置示例:

环境要求:

安装auth_basic 模块

[root@node1 asite]# httpd -M |grep auth_basic
auth_basic_module (shared)
(1) 定义安全域
<Directory /data/html/rz>  哪个目录需要加密
Options None
AllowOverride None
AuthType Basic
AuthName "rzPage"    此处效果”让你输入认证前的提示信息“ 不同的浏览器看到的效果可能不一样
AuthUserFile "/etc/httpd/conf.d/.huser"   密码文件路径
Require user  alice tom    哪个用户可以访问
</Directory>

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

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

使用专用命令完成此类文件的创建及用户管理

htpasswd	[options] /PATH/HTTPD_PASSWD_FILE username
  • -c 自动创建文件,仅应该在文件不存在时使用
  • -p 明文密码
  • -d CRYPT格式加密,默认
  • -m md5格式加密
  • -s sha格式加密
  • -D 删除指定用户

例:

[root@node1 ~]# htpasswd  -c  /etc/httpd/conf.d/.huser bob  
New password: 
Re-type new password: 
Adding password for user bob
[root@node1 ~]# htpasswd    /etc/httpd/conf.d/.huser  alice
New password: 
Re-type new password: 
Adding password for user alice

重启服务器就可以,验证

4、基于组账号进行认证

(1) 定义安全域
<Directory “/data/html/rz2">
AuthType Basic
AuthName "String“
AuthUserFile	"/etc/httpd/conf.d/.huser"
AuthGroupFile 	"/etc/httpd/conf.d/.hgroup"
Require group  male 
</Directory>
(2) 创建用户账号和组账号文件

组文件:每一行定义一个组
格式 GRP_NAME: username1 username2 …

例子:

[root@node1 ~]# cat /etc/httpd/conf.d/.hgroup
male: bob tom 
female : alice rose

验证:只有male 组可以访问

5. 启用status页面

1、环境要求:装载 status_module (shared) 模块

2、conf 配置

<requireany>
require all denied 
require ip 192.168.37.0/24
</requireany>                                                                                                                                   
</Location>

验证:http://192.168.0.3/status/

6、虚拟主机设置

虚拟主机的实现依赖站点标识

  • IP相同,但端口不同
  • IP不同,但端口均为默认端口
  • FQDN不同:请求报文中首部 Host: www.magedu.com

有三种实现方案:

  • 基于ip:为每个虚拟主机准备至少一个ip地址
  • 基于port:为每个虚拟主机使用至少一个独立的port
  • 基于FQDN:为每个虚拟主机使用至少一个FQDN
6.1 基于IP的多虚拟主机

conf

<virtualhost 192.168.0.3:80>
documentroot /data/asite
CustomLog "logs/asite_access_log" combined
<Directory "/data/asite">
    Require all granted
</Directory>
</virtualhost>

<virtualhost 192.168.0.4:80>
documentroot /data/bsite
CustomLog "logs/bsite_access_log" combined
<Directory "/data/bsite">
    Require all granted
</Directory>
</virtualhost>

<virtualhost 192.168.0.5:80>                                                                                                                
documentroot /data/csite
CustomLog "logs/csite_access_log" combined
<Directory "/data/csite">
    Require all granted
</Directory>
</virtualhost>

设置站点首页

root@z1:~# ip a a 192.168.0.4/21   dev eth0
root@z1:~# ip a a 192.168.0.5/21   dev eth0
root@z1:~# mkdir /data/{asite,bsite,csite} -p
root@z1:~# echo "a aa" > /data/asite/index.html
root@z1:~# echo "b bb" > /data/bsite/index.html
root@z1:~# echo "c cc" > /data/csite/index.html

测试

[root@node1 ~]# curl 192.168.0.3
a  aa
[root@node1 ~]# curl 192.168.0.4
b bb
[root@node1 ~]# curl 192.168.0.5
c cc
6.2 基于port的多虚拟主机

conf

listen 81
listen 82
listen 83

<virtualhost *:81>
documentroot /data/asite
<Directory "/data/asite">
    Require all granted
</Directory>
</virtualhost>
<virtualhost *:82>
documentroot /data/bsite
<Directory "/data/bsite">
    Require all granted
</Directory>
</virtualhost>
<virtualhost *:83>
documentroot /data/csite
<Directory "/data/csite">
    Require all granted
</Directory>
</virtualhost>

测试

[root@node1 ~]# curl 192.168.0.3:81
a  aa
[root@node1 ~]# curl 192.168.0.3:82
b bb
[root@node1 ~]# curl 192.168.0.3:83
c cc
6.3 基于主机头的多虚拟主机

conf

<virtualhost *:80>  
documentroot /data/asite
servername www.a.com
<Directory "/data/asite">
    Require all granted
</Directory>
</virtualhost>

<virtualhost *:80>
documentroot /data/bsite
servername www.b.com
<Directory "/data/bsite">
    Require all granted
</Directory>
</virtualhost>

<virtualhost *:80>
documentroot /data/csite
servername www.c.com
<Directory "/data/csite">
    Require all granted
</Directory>
</virtualhost>                      

修改dns

[root@node1 ~]# vim /etc/hosts
192.168.0.3 www.a.com www.b.com www.c.om 

测试:

[root@node1 ~]# curl www.a.com
a  aa
[root@node1 ~]# curl www.b.com
b bb
[root@node1 ~]# curl www.c.com
c cc

7.页面压缩

使用mod_deflate模块压缩页面优化传输速度
适用场景:
(1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持
(2) 压缩适于压缩的资源,例如文本文件

7.1方法:
  1. 启动压缩模块

    LoadModule deflate_module modules/mod_deflate.so

  2. 调用DEFLATE输出过滤器

    设置过滤器,并向过滤器添加明确说明哪些是能通过过滤,允许使用压缩功能的文件类型

    SetOutputFilter DEFLATE
    常见的两种压缩类型
    AddOutputFilterByType DEFLATE text/plain (添加纯文本类型)
    ​AddOutputFilterByType DEFLATE text/html (添加html)

  3. 设置压缩比

    Level of compression (Highest 9 - Lowest 1)

    DeflateCompressionLevel 9

  4. 其他的压缩类型

    • AddOutputFilterByType DEFLATE text/xml
    • AddOutputFilterByType DEFLATE application/xml
    • AddOutputFilterByType DEFLATE application/x-javascript
    • AddOutputFilterByType DEFLATE text/javascript
    • AddOutputFilterByType DEFLATE text/css
7.2 例子:

确认环境:

[root@node1 ~]# httpd -M |grep modeflate
deflate_module (shared)

没有启用压缩之前 请求内容的大小Content-Length 为347

[root@node1 html]# curl -I 192.168.0.3/m.txt
HTTP/1.1 200 OK
Date: Sat, 22 Feb 2020 14:42:21 GMT
Server: Apache
Last-Modified: Sat, 22 Feb 2020 14:37:44 GMT
ETag: "15b-59f2b14cbad53"
Accept-Ranges: bytes
Content-Length: 347
Content-Type: text/plain; charset=UTF-8

[root@node1 html]# ll -t
total 8
-rw-r--r-- 1 root root  20 Feb 22 22:38 index.html
-rw-r--r-- 1 root root 347 Feb 22 22:37 m.txt
[root@node1 html]# 

启用压缩之后

conf:

SetOutputFilter DEFLATE                                                                                                                     
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/html   
DeflateCompressionLevel 9

发现之后请求的内容大小变为250

注意:curl 浏览器 默认不启用压缩, --compressed 启用压缩。

[root@node1 html]# curl -I --compressed  192.168.0.3/m.txt
HTTP/1.1 200 OK
Date: Sat, 22 Feb 2020 14:47:39 GMT
Server: Apache
Last-Modified: Sat, 22 Feb 2020 14:37:44 GMT
ETag: "15b-59f2b14cbad53-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 250
Content-Type: text/plain; charset=UTF-8
7.3 注意

​ 在服务器开启压缩功能后,客户端在获取资源的过程中,是否启用压缩功能,是一个协商的过程。大多数浏览器默认是使用压缩的

8. httpd 的反向代理

启用反向代理

代理服务器的设置:

ProxyPass “/” “http://www.example.com/” 访问 代理服务器的主目录时 跳转到example.com
ProxyPassReverse “/” “http://www.example.com/” 把example,com 响应的内容 跳到 代理服务器的 / 根下

特定URL反向代理
ProxyPass “/images” “http://www.example.com/”

ProxyPassReverse “/images” http://www.example.com/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值