分类: Apache
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
ubuntu 18.04 Apache2启用HTTP/2
HTTP/2 可以让我们的应用更快、更简单、更稳定 – 这几词凑到一块是很罕见的!HTTP/2 将很多以前我们在应用中针对 HTTP/1.1 想出来的“歪招儿”一笔勾销,把解决那些问题的方案内置在了传输层中。不仅如此,它还为我们进一步优化应用和提升性能提供了全新的机会!
——《Web 性能权威指南》
Ubuntu18.04 官方源已经包含带有HTTP2模块的 Apache/2.4.29 ,所以我们可以很简单的启用 HTTP2。
首先启用 http2 模块,然后在虚拟主机的配置文件中或者在Apache2的全局配置文件中加入:
当客户端支持时优先使用 HTTP2 ,其次是 http/1.1,表明了一种优先顺序。目前为止就已经启用完成了,但如果你是使用的 Apache2+PHP 架构的应用程序,由于 mpm_prefork 模块不支持 mod_http2,所以我们需要切换 mpm_prefork、mod_php 到 mpm_event 和 php-fpm 来解决这个问题。
Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute
最近在浏览器(Chrome 85.0.4183.121
)调试网页的时候,出现如下警告信息:
继续阅读Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute
apache日志中的中文如何显示?
apache日志记录的中文,是内码如下:
编码后中文是:
完全看不懂是什么意思,如何解析出里面的中文出来呢?
php参考如下代码:
golang参考如下代码:
java参考如下代码:
参考链接
Apache2.4中通过.htaccess配置解决Chrome 68之后的浏览器报告网站不安全的问题
在2018
年7
月24
日发布的Chrome 68
中,Google
有一项重大举措就是宣布所有HTTP
网站都会被标识为not secure
,也就是不安全
,并计划在Google
搜索结果里降低HTTP
网站的权重和排名。
实际的效果如下图:
Apache中设置来自移动端的请求强制重定向到HTTPS规避运营商的页面劫持
最近中国移动的流量劫持到了令人发指的地步,凡是没有使用HTTPS
的网址都会被劫持,非常影响用户体验。如下图所示(右下角):
ubuntu 16.04.3上apache 2.4.18通过HTTP_REFERER阻止图片盗链
最近偶尔碰到网站的流量被消耗尽的情况,已经影响到自己的使用了。怀疑网站图片,数据等被盗链,导致流量被消耗。
ubuntu 16.04.3
上apache 2.4.18
防止网站图片被盗链的方法如下:
首先是在根目录下创建一个.htaccess
,如果已经有了,直接把下面的代码添加到.htaccess
尾部即可。
简单的解释下每条语句:
允许空“HTTP_REFERER
”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER
”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。
设置允许访问的HTTP
来源,包括我们的站点自身、Google
、Baidu
等。这个可以添加多条,目前我们配置只有自身还有谷歌百度等常用的搜索引擎的访问权限。
定义被盗链时替代的链接,可以是图片,也可以是404
错误页,目前我们定义的是首页,所以就是mobibrw.com
,如果是要定义在404
页面,可以把404
页面的路径加上。当然替换的页面文件体积越小越好。你也可以不设置替换图片,而是使用下面的语句即可(服务器返回403
禁止访问):
参考链接
ubuntu 16.04.3上apache2服务器报告错误“script not found or unable to stat: /usr/lib/cgi-bin/php*”
最近在查看服务器上的apache2
的错误日志的时候,发现如下错误信息:
刚刚开始感觉莫名其妙,因为PHP
的解析已经通过PHP-FPM
模式进行处理,服务器上的配置已经不需要cgi
进行处理了。
网上搜索了一下,发现这个是由于ubuntu
上apache2
的默认配置模版导致的,尤其是从ubuntu 12.04
一路升级上来的系统,在配置模版中有指出/usr/lib/cgi-bin/
这个路径,可是这个路径已经不再使用了。
修改方式如下:
向下查找,会发现如下内容:
如果确实网站已经不再使用任何cgi
相关的东西了,可以直接注释掉这段代码。
另外如果开启了HTTPS
,同理需要修改HTTPS
对应的配置文件。
修改完成后,重启服务器:
参考链接
script not found or unable to stat: /usr/lib/cgi-bin/php-cgi
ubuntu 16.04执行letsencrypt的时候报告错误“ImportError: No module named datetime”
网站一直使用letsencrypt
提供的HTTPS
证书,这个证书的问题在于每隔三个月就必须更新一次,本次更新证书的时候,提示如下错误:
错误发生的原因在于letsencrypt
自己构建了一个Python
的虚拟环境来隔离,但是早期建立的虚拟环境中是缺少部分软件包的,而自身的BUG
导致也没有重新更新虚拟环境,导致出现异常。
解决方法就是删除letsencrypt
自己构建的Python
的虚拟环境,然后继续执行脚本让他重建即可。
参考链接
Ubuntu 14.04.5版本上安装并启用Apache 2.4.10版本的Event MPM模块
Apache 2.4
版本开始已经尝试借鉴Nginx
的实现方式来处理网络连接。但是到目前(2017.2.22)为止,实现的并不彻底,只是在处理HTTP
协议的时候使用异步模式,而处理HTTPS
协议的时候,依旧使用每个连接一个线程的模式。据说完整的支持HTTPS
异步,要到Apache 3.x
版本了。
目前的Apache MPM event
本质上还是Apache MPM worker
的优化版本,并不是一个完整的独立模式。
尽管支持的不是太完善,但是这部分的实现,已经能比较好的改善Apache 2.4
的网络处理性能了,尤其是对于我这种访问压力不是太大的网站来说,目前应该是够用了的。暂时可以缓解一下迁移到Nginx
的急迫性,并且比较好的减少访问网站时候的延迟比较高的问题。
到目前(2017.2.22)为止在Ubuntu 14.04.5
版本上Apache Event MPM
还不属于正式版本,而是被部署到了backports
(待发布)分支上,处于候选发布状态,因此我们安装的时候,需要执行指定backports
,具体执行命令如下:
模块的配置文件在/etc/apache2/mods-available/mpm_event.conf
,目前我这边用默认配置已经足够了(足见访问量是多么的少,呵呵)。
启用Apache MPM event
模块
查询Apache 2.4
当前正在使用的模块
返回值会是event
, prefork
, worker
中的一个,如果返回了event
,则说明我们已经成功启用了Apache MPM event
模块。
目前实际测试来看,确实能非常明显的加快网站的访问速度,访问延迟明显变短。