apache相关实验-2

一、Apache+openssl 实现 https

HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,用于安全的 HTTP 数据传输。这个系统被内置于浏览器中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例 如交易支付方面。

1、检查模块是否开启
[[email protected] ~]# /usr/local/apache2/bin/apachectl -M | grep ssl
 ssl_module (shared) #如果没有,则更改主配置文件。
[[email protected] ~]# vim /usr/local/apache2/etc/httpd.conf
LoadModule ssl_module modules/mod_ssl.so(大约在134行,取消注释)
 Include etc/extra/httpd-ssl.conf(大约在502行,取消注释)
2、CA 证书申请
a、生成私钥
[[email protected] ~]# openssl genrsa -out ca.key 1024
b、证书签名请求文件

需要依次输入国家,地区,城市,组织,组织单位,Email 等信息。最重要的是有一个 common name,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名吻合,否则会引发浏览器警报。生成的 csr 文件交给 CA 签名后形成服务端自己的证书

[[email protected] ~]# openssl req -new -key ca.key -out love2.csr
c、生成证书
[[email protected] ~]# openssl x509 -req -days 365 -sha256 -in love2.csr -signkey ca.key -out love2.crt
d、移动相关文件
[[email protected] ~]# mv ca.key /usr/local/apache2/cert/
[[email protected] ~]# mv love2.crt  /usr/local/apache2/cert/
注意:在生产环境中必须要在 https 证书厂商注册(否则浏览器不识别)
3、修改子配置文件
[[email protected] ~]# vim /usr/local/apache2/etc/extra/httpd-ssl.conf
    #添加 SSL 协议支持协议,去掉不安全的协议
    SSLProtocol all -SSLv2 -SSLv3
    #修改加密套件如下
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    #指定证书文件位置
    SSLCertificateFile "/usr/local/apache2/cert/love2.crt"
    指定私钥文件位置
    SSLCertificateKeyFile "/usr/local/apache2/cert/ca.key"
4、修改主配置文件
<VirtualHost _default_:443>
        DocumentRoot "/usr/local/apache2/htdocs"
        ServerName localhost:443
        SSLCertificateFile cert/love2.crt
        SSLCertificateKeyFile cert/ca.key
        SSLCertificateChainFile cert/love2.crt
</VirtualHost>
5、检查配置,重启apache
[email protected] ~]# /usr/local/apache2/bin/apachectl -t
AH00526: Syntax error on line 92 of /usr/local/apache2/etc/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?). (如果出现报错,则加载对应模块)
[email protected] ~]# /usr/local/apache2/bin/apachectl restart
6、访问

7、强制跳转https

为了保证安全,很多网站不允许使用http访问,我么们可以通过设置,使访问强行跳转。

修改主配置文件
 <Directory "/usr/local/apache2/htdocs">
    ……
    RewriteEngine on       #开启转发规则
    RewriteCond %{SERVER_PORT} !^443$   #检查访问端口只要目标不是443的
    RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [R=301,L] #全都使用https重新访问
   </Directory> 

二、Apache 日志切割

我们每访问一次网站,那么就会记录若干条日志。如果日志不去管理,时间长了日志文件会越来越大, 如何避免产生大的日志文件?其实 apache 有相关的配置,使日志按照我们的需求进行归档,比如每天一个新日志,或者每小时一个新的日志。

编辑主配置文件
[[email protected]s ~]# vim /usr/local/apache2/etc/httpd.confvim /usr/local/apache2/etc/httpd.conf
添加以下配置
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/error_%Y%m%d.log 86400"
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_%Y%m%d.log 86400" combined
访问几次查看日志目录
[[email protected] logs]# ls
access_20200107.log  bb-access_log  error_20200107.log  httpd.pid      qq-error_log
access_log           bb-error_log   error_log           qq-access_log  ssl_request_log

三、忽略某些日志

如果一个网站访问量特别大,那么访问日志就会很多,但有一些访问日志我们其实是可以忽略掉的, 比如网站的一些图片,还有 js、css 等静态对象。

编辑主配置文件
[[email protected] ~]# vim /usr/local/apache2/etc/httpd.conf

SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$"  image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/local ... _%Y%m%d.log 86400" combined env=!image-request

在原来的访问日志配置基础上,增加了一些 image-request 的定义,比如把 gif、jpg、bmp、 swf、js、css 等结尾的全标记为 image-request,然后在配置日志后加一个标记 env=!image-request, 表示取反

四、静态文件的缓存

所说的静态文件指的是图片、js、css 等文件,用户访问一个站点,其实大多数元素都是图片、js、 css 等,这些静态文件其实是会被客户端的浏览器缓存到本地电脑上的,目的就是为了下次再请求时不再去服务器上下载,这样就加快了速度,提高了用户体验。但这些静态文件总不能一直缓存,它总有一些时效性,那么就得设置这个过期时间。

编辑主配置文件
[[email protected] ~]# vim /usr/local/apache2/etc/httpd.conf

<IfModule mod_expires.c> (此模块未启用,大约在111行,取消注释即可)
    ExpiresActive on
    ExpiresByType image/gif "access plus 1 days"
    ExpiresByType image/jpeg "access plus 24 hours"
    ExpiresByType image/png "access plus 24 hours"
    ExpiresByType text/css "now plus 2 hours"
    ExpiresByType text/html  "now plus 15 mins"
    ExpiresByType application/x-javascript "now plus 2 hours"
    ExpiresByType application/javascript "now plus 2 hours"
    ExpiresByType application/x-shockwave-flash "now plus 2 hours"
    ExpiresDefault "now plus 0 min"
</IfModule>
测试
[[email protected] logs]# curl "http://127.0.0.1" -I
HTTP/1.1 301 Moved Permanently
Date: Tue, 07 Jan 2020 02:30:03 GMT
Server: Apache/2.4.41 (Unix) OpenSSL/1.0.1e-fips PHP/7.3.11
Location: https://127.0.0.1/
Cache-Control: max-age=900  #这里就是我们刚才设计的15mins
Expires: Tue, 07 Jan 2020 02:45:03 GMT
Content-Type: text/html; charset=iso-8859-1

原文地址:https://www.cnblogs.com/hjnzs/p/12160825.html

时间: 2024-08-03 16:46:27

apache相关实验-2的相关文章

col标签的相关实验

col上有width属性,如果对应值没有单位,默认是像素 <!DOCTYPE html> <html> <head> <title>col相关实验</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" c

浅析LUM及相关实验

浅析LVM及相关实验 LVM(Logical Volume Manager)是一个磁盘管理子系统,将一个或者多个底层设备组织成逻辑设备.在LVM里,一个或者多个PV组成一个VG(Volume Group,卷组),而从一个VG里又可以虚拟划分出若干个LV(Logical Volume,逻辑)卷), 如下示意图 其底层设备划分成分区PE,单个PE默认大小为4M,可取值4M,8M,12M,16M 为2的整数倍. 在pv ,vg ,lv之下的操作,有一些命令 pv:  pvcreate, pvs, pv

mariadb事务隔离级别相关实验

关于SQL的隔离级别 SQL标准定义了4类隔离级别,如下所示:1. Read Uncommitted (读取未提交内容)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果.本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少.读取未提交的数据,也被称之为脏读(Dirty Read) 2. Read Committed (读取提交内容)这是大多数数据库系统的默认隔离级别(但不是MySQL默认的).它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变.这种隔离级别 也支持所谓

KVM的driver_mirror功能相关实验

原创,转载请务必注明出处及URL,谢谢! 早前做的一些KVM功能相关的实验,分享一下. mirror相关实验1[mirror功能基本测试]: vm运行时,执行镜像操作: virsh qemu-monitor-command --hmp vmxxxxxxx  'drive_mirror -f xxxblock_device  /data/xxxxxx-mirror.img' 查看完成状态: virsh qemu-monitor-command --hmp vmxxxxxxx  'info bloc

相关实验示例

相关实验示例 创建文件系统 1.创建分区 fdisk or gdisk /dev/DIVICE 2.创建文件系统 mkfs .fs_type or mkfs -t fs_type /dev/DIVICE/??? 3.挂载 创建挂载点 mkdir /mnt/???(可以任意创建) 临时挂载: mount /dev/DIVICE/??? /mnt/???(挂载点) 永久挂载 :vim /etc/fstab UUID ------.. mount -a 创建和删除swap分区 1.创建分区 fdisk

网络组相关实验

网络组相关实验 网络组是centos7上新出的一个技术,它的作用和bonding类似,是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量,不同于旧版中bonding技术,网路组提供更好的性能和扩展性,它是由内核驱动和teamd守护进程实现. 网路组可以工作在多种方式(runner) broadcast roundrobin activebackup loadbalance lacp (implements the 802.3ad Link Aggregation Control Protoco

vsftp服务介绍与相关实验

一.VSFTP服务简介 FTP 是 File Transfer Protocol(文件传输协议)的英文简称,用于 Internet 上的文件的双向传输.使用 FTP 来传输时,是具有一定程度的危险性, 因为数据在因特网上面是完全没有受到保护的明文传输方式!VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP, 从名称定义上基本可以看出,这是为了解决 ftp 传输安全性问题的. 1.1.vsftp特点 vsftp 程序的运行者一般是普通用

8. apache服务实验笔记

Apache服务器 一 简介 1 www:world  wide  web 万维网 http 协议: 超文本传输协议 HTML语言: 超文本标识语言 2 URL:统一资源定位 协议+域名:端口+网页文件名 http://www.sina.com.cn:80/11/index.html 3 搭建www的服务器的方法 windows   IIS+asp+SQLserver Internet  Information  server Linux apache+mysql+php 二 安装 1.lamp

CentOS6启动流程呢个以及删除boot分区相关实验

centos6启动流程 主动读取BIOS,通过CMOS加载硬件信息 ,并进行POST,指定第一个可启动的设备 ROM:BIOS,Basic Input and Output System,保存着计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序RAM:保存各项参数的设定 读取第一个可启动设备MBR的引导加载程序(grub)的启动信息 MBR: 446 boot loader 64:分区表 2 :55aa BIOS通过硬件的INT13中断功能来读取MBR的 Windows:ntlo