你在这里


Apache

https多网站1个IP多个SSL证书的Apache设置办法

James Qi 2016年11月29日 - 09:28 发布

  这些天接触了解SSL证书后,写了一篇《申请免费的SSL证书,开通https网站》博文,其中简单记录了Apache的设置,后来又涉及到多个域名、泛域名解析、通配符SSL证书、单服务器/多服务器、IP、端口等方方面面,去查了一些资料才在Apache上配置成功,干脆重新写一篇博文来记录。

多种情况

  先写各种可能的情况:

自由标签:

Apache Rewrite重定向Drupal升级后&符号的编码%2526成为%26

James Qi 2016年1月7日 - 14:18 发布

  一个系列网站从drupal 6升级到drupal 7后日志中发现大量报错,都是以前可以正常访问的网址现在找不到了,发现以前drupal 6中是这样的:

http://ut.mingluji.com/business_directory/Western_Heating_%2526_Air_Conditioning

  在google搜索中也是上面这样的网址,但升级后以上访问成了404 not found,而用下面这样的网址可以访问:

http://ut.mingluji.com/business_directory/Western_Heating_%26_Air_Conditioning

  对比发现少了一个25,为了兼容起来还需要在.htaccess中写一个Apache ReWrite规则来实现老网址301重定向跳转到新网址,按理说这个跳转非常简单的,但那个%2526的写法却总是不被apache识别,和同事尝试了好几个小时才最终搞定:

RewriteCond %{REQUEST_URI} ^(.*)\%26(.*)$
RewriteRule ^(.*)\%26(.*)$ $1\%26$2 [NE,L,R=301]

  要点有两个:

修改apache httpd最大连接数

James Qi 2015年6月4日 - 10:25 发布

  Apache的httpd进程数量是个老问题,最开始使用Linux独立服务器的时候就摸索修改过。后来新购入服务器托管、租用国外服务器都是硬件配置相当强的,这个地方也都修改过。

  不过前一阵子搬迁到阿里云服务器的时候,同事并没有修改这个地方,部分网站搬迁后感觉变慢了,而带宽、CPU等资源都没有用充分,后来在阿里云监控中检查发现httpd进程会达到一个限制平顶,再才排查原来是httpd最大连接数量没有修改。

  最近又搬迁网站增加了阿里云服务器,以后估计还会搬迁、增加,所以专门记录在博客中:

自由标签:

基于时间的Apache ReWrite规则

James Qi 2015年5月18日 - 17:53 发布

  这些年在使用MediaWiki和Drupal过程中难免要用到Apache的重写规则,最基本的是用于网址简洁化,去掉那些index.php?title=之内的东西,后来也用于跳转手机版判断、屏蔽采集者、纠正引导报错网址等,可以说是一个非常有力的工具,基本上是没法离开。

  但在做一些临时性、测试性修改的时候,偶尔会忘记改还原而导致出现问题,例如因为服务器负载过高而临时屏蔽某个搜索引擎的User-Agent,后来忘记还原了导致搜索引擎爬虫无法抓取、收录量急剧下降等,如果能在临时设置的时候就限定时间就好,以前这样想过,但一直没有找办法。

  今天在网上搜索了一下,找到了办法,.htaccess中代码如下:

自由标签:

从Apache访问日志统计IP访问数,发现采集者屏蔽

James Qi 2013年11月8日 - 15:31 发布

  在Drupal网站中使用PHP程序来屏蔽采集者效果还不错,可以自己任意设定判断标准。不过我们以前的MediaWiki平台上的网站还没有使用这套PHP程序来屏蔽,最近发现采集又太多了,搞得服务器负载太高,老是从Apache日志人工排查太麻烦、太慢(以前的办法见博文《Apache中设置屏蔽IP地址和URL网址来禁止采集》),今天花一些时间编写了一个小程序来统计日志中的IP访问数,程序很简短,如下:

Apache中设置屏蔽IP地址和URL网址来禁止采集

James Qi 2012年11月23日 - 11:31 发布

  只要是建有数据量比较多的网站,几乎不可避免采集的情况,这方面我们已经有多年的对付经验,主要是通过分析Web访问日志,找到采集的规律,相应来设置屏蔽IP地址或者URL网址来解决。

  国内的Linux服务器上我们都安装了Squid作为Apache的前端缓存,所以我们遇到采集的情况就分析Squid的日志,在squid.conf文件中进行设置屏蔽,然后重启Squid服务就可以。

  近期租用的国外Linux服务器上默认是没有Squid的,我们也就只用了Apache作为Web服务器,修改了httpd.conf来让Apache的日志文件显示更详细的虚拟主机域名、User-Agent等信息,以便遇到采集的情况可以分析。

  前一阵子遇到来自固定某个或者某段IP的采集,我们就修改httpd.conf文件,在影响的主机设置中添加这样的代码:

Order Deny,Allow
Deny from 125.115.2.85
Deny from 91.228.196.234

  然后重启Apache服务就可以。

网站自动判断浏览者所用终端设备,手机用户重定向到手机版

James Qi 2012年6月7日 - 11:39 发布

  为传统网站添加手机版以后,刚开始手机版可能没有什么流量,可以采取两个办法来促进:

  1. 在传统网站的页面中(一般是页面底部)添加切换到手机版的链接;
  2. 在服务器上设置自动判断来访者终端,手机用户就直接重定向到手机版。

  第一个办法做起来很简单,由用户自行点击切换,带来的流量是逐步的;而第二个办法需要在服务器上进行一些设置,自动切换,更自动提高手机用户体验,带来的流量也会更多、更快。

  自动判断、重定向的办法也有几种:

  1. 使用网站构建的程序(例如PHP)来判断、重定向;
  2. 使用服务器上的Web服务(例如Apache)来判断、重定向。

  在去年做的邮编库手机版中,采用了第一种办法,在原有MediaWiki搭建的邮编库网站中的部分页面嵌入了判断、重定向的PHP程序;近期做的网站添加手机版工作基本上是电脑版的每个网页都在手机版上有对应的页面,所以更适合采用第二种办法,也就是在Apache中设置重定向。

  在Apache中设置重定向有两个办法:

手机版网站与电脑版网站的自动判断及切换

James Qi 2012年1月27日 - 23:55 发布

  12月份在武汉的一次互联网聚会中遇到上海的几个朋友,说到我去年尝试做了一个手机查询邮编的网站,他们到底是内行,问到是否做了自动判断浏览者的终端类型、自动切换,这个问题我一直想做但也一直没有做。聚会后我在服务器和网站上做了点实验,可以在某个页面实现自动判断、切换,但整体如何设置还没有想得很清晰,就先搁置了。

  春节这两天稍微空闲一点,就又把这个问题摸索了一番,算是基本找到了解决办法,要点及代码记录如下:

  首先要明确哪一个共同的URL切换到哪两个不同版本的URL,我选择是:

自由标签:

订阅 RSS - Apache