apache相关实验-2
一、Apache+openssl 实现 https
HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,用于安全的 HTTP 数据传输。这个系统被内置于浏览器中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例 如交易支付方面。
1、检查模块是否开启
[root@centos ~]# /usr/local/apache2/bin/apachectl -M | grep ssl
ssl_module (shared) #如果没有,则更改主配置文件。
[root@centos ~]# 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、生成私钥
[root@centos ~]# openssl genrsa -out ca.key 1024
b、证书签名请求文件
需要依次输入国家,地区,城市,组织,组织单位,Email 等信息。最重要的是有一个 common name,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名吻合,否则会引发浏览器警报。生成的 csr 文件交给 CA 签名后形成服务端自己的证书
[root@centos ~]# openssl req -new -key ca.key -out love2.csr
c、生成证书
[root@centos ~]# openssl x509 -req -days 365 -sha256 -in love2.csr -signkey ca.key -out love2.crt
d、移动相关文件
[root@centos ~]# mv ca.key /usr/local/apache2/cert/
[root@centos ~]# mv love2.crt /usr/local/apache2/cert/
注意:在生产环境中必须要在 https 证书厂商注册(否则浏览器不识别)
3、修改子配置文件
[root@centos ~]# 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
root@centos ~]# /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?). (如果出现报错,则加载对应模块)
root@centos ~]# /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 有相关的配置,使日志按照我们的需求进行归档,比如每天一个新日志,或者每小时一个新的日志。
编辑主配置文件
[root@centos ~]# 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
访问几次查看日志目录
[root@centos 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 等静态对象。
编辑主配置文件
[root@centos ~]# 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 等,这些静态文件其实是会被客户端的浏览器缓存到本地电脑上的,目的就是为了下次再请求时不再去服务器上下载,这样就加快了速度,提高了用户体验。但这些静态文件总不能一直缓存,它总有一些时效性,那么就得设置这个过期时间。
编辑主配置文件
[root@centos ~]# 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>
测试
[root@centos 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
apache相关实验-2的更多相关文章
- apache相关实验-1
一.目录别名实验 当 apache 接受请求时,在默认情况下会将 DocumentRoot 目录中的文件送到客户端,如果想将某一不在 DocumentRoot 目录中的文件共享到网站上,并希望将它们留 ...
- tomcat相关实验
tomcat相关实验 1.实现LNT 同主机实现 1.安装并启动tomcat 1)OpenJDK的安装 yum install java-1.8.0-openjdk-devel.x86_64 确定JD ...
- nginx介绍及相关实验
一.nginx介绍 1.nginx简介 Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP 服务.Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 R ...
- MIT Molecular Biology 笔记4 DNA相关实验
视频 https://www.bilibili.com/video/av7973580?from=search&seid=16993146754254492690 教材 Molecular ...
- col标签的相关实验
col上有width属性,如果对应值没有单位,默认是像素 <!DOCTYPE html> <html> <head> <title>col相关实验< ...
- apache相关补充
apache相关补充 sendfile机制 1)不用sendfile的传统网络传输过程: read(file, tmp_buf, len) write(socket, tmp_buf, len) 2) ...
- rsync 服务介绍及相关实验
一.rsync 简介 rsync 是类 unix 系统下的数据镜像备份工具.一款支持快速完全备份和增量备份的工具,支持本 地复制,远程同步等,类似于 scp 命令:rsync 命令在同步文件之前要先登 ...
- 8. apache服务实验笔记
Apache服务器 一 简介 1 www:world wide web 万维网 http 协议: 超文本传输协议 HTML语言: 超文本标识语言 2 URL:统一资源定位 协议+域名:端口+网页文 ...
- LAPM 相关实验01
目录 lab1 静态.动态资源的区别lab2 部署phpMyadminlab3 部署wordpresslab4 编译安装php-Xcache加速器lab5 fcgi实现lamp lab1 静态.动态资 ...
随机推荐
- uniapp点击底部tabbar不跳转页面
一个项目,其设想是这样的,当我进入页面,发现有新版本,提示用户之后,用户点击确定跳转到下载页面. 弹出框要用自己封装的,因为uniapp的弹出框不同的手机上展示的样子不一样,领导的是华为(在这里悄悄吐 ...
- [C#] 如何把void*转换为byte[]
一般来说,C#库的对外接口应该提供byte[]这样比较容易用的接口,而不应该提供裸的void* 但是有些库确实是这么封装的.那么就有一个如何转换的问题.MSDN推荐的转换方式是使用UnmanagedM ...
- oracle merge into 新增或者修改
merge into sn_balance b1 using(select 'admin' as userid,1 as type1 from dual) b2 on(b1.userid=b2.use ...
- POJ2406 Power Strings 题解 KMP算法
题目链接:http://poj.org/problem?id=2406 题目大意:给你一个字符串 \(t\) ,\(t\) 可以表示为另一个小字符串循环了 \(K\) 了,求最大的循环次数 \(K\) ...
- uva 12296 Pieces and Discs (Geometry)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- HDU 1754线段树基本操作,建树,更新,查询
代码线段树入门整理中有介绍. #include<cstdio> #include<algorithm> #include<cstring> #include< ...
- UA
我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...
- Mail.Ru Cup 2018 Round 2 B. Alice and Hairdresser (bitset<> or 其他)
传送门 题意: 给出你序列 a,在序列 a 上执行两种操作: ① 0 :查询有多少连续的片段[L,...,R],满足 a[L,...,R] > l: ② 1 p d :将第 p 个数增加 d: ...
- P1062 差K素数对
题目描述 给你两个数 n 和 k ,请求出所有小于等于 n 的相差为 k 的素数对. 输入格式 两个正整数n,k.1<=k<=n<=10000. 输出格式 所有小于等于n的素数对.每 ...
- java 内省综合案例和Beanutils工具包
演示用eclipse自动生成 ReflectPoint类的setter和getter方法. 直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用 ...