nginx配合codeIgniter有点麻烦,没有apache和lighttpd那么简单。

$HTTP["host"] == "www.aslibra.com" {
  server.document-root = "/path/to/www.aslibra.com/"
  url.rewrite = (
    "^/static/.*$" => "$0",
    "^/(.*)$" => "index.php/$1"
  )
  fastcgi.server = ( ".php" =>
    ( "weibo"=>( "host" => "127.0.0.1","port" => 9000) )
  )
}


在apache和lighttpd里面,判断 /index.php/sth 时,如果 /index.php是一个文件,就不会当做是文件路径了

我们可以这样简单的把某些路径rewrite,达到一样的效果:
1 保持地址格式是 /index.php/control/model
2 不产生404错误或者是no input的情况

server {
  index index.php index.htm;
  server_name  www.aslibra.com;
  root    /Data/webapps/www.aslibra.com;

  location /book/ {
    if (!-e $request_filename) {
      rewrite ^/book/(.*)$ /book/index.php/$1 last;
    }
  }
  location /book/index.php {
    fastcgi_pass   127.0.0.1:9000;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME    /Data/webapps/www.aslibra.com/book/index.php;
  }
}


我们还需要避免类似以下地址异常:

/book/?test 404 查询字符会查找test的control
/book/&test 错误 The URI you submitted has disallowed characters.

总体而言,是查询字符的问题,我们可以有两种方式处理:

方式一:在codeIgniter处理之前避免

我们定义系统使用REQUEST_URI来处理mvc参数,不修改系统的文件,我们修改自定义的文件

文件 application/config/config.php
指定为REQUEST_URI方式处理,不是用auto,auto方式会判断查询字符

| 'AUTO'      Default - auto detects
| 'PATH_INFO'    Uses the PATH_INFO
| 'QUERY_STRING'  Uses the QUERY_STRING
| 'REQUEST_URI'    Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol']  = "REQUEST_URI";


文件 index.php
我们可以直接砍掉查询字符,保证参数不受影响

//处理查询字符
$url = explode('?', $_SERVER['REQUEST_URI']);
$url = explode('&', $url[0]);
$_SERVER['REQUEST_URI'] = $url[0];

/*
|---------------------------------------------------------------
| LOAD THE FRONT CONTROLLER
|---------------------------------------------------------------
|
| And away we go...
|
*/
require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;


方式二:发生错误之后调整

发生404错误时,我们自动跳转到相应的地址,比如去掉后面 ?xxxx 和 &xxxx

文件 application/errors/error_404.php

<?php
$url = explode('?', $_SERVER['REQUEST_URI']);
$url = explode('&', $url[0]);
if($url[0] != $_SERVER['REQUEST_URI']){
  echo "<meta http-equiv=\"refresh\" content=\"0;url=$url[0]\">";
}
?>
</head>


在 error_general.php 里也可以这样加一样的代码。

参考资料:

1 不错的nginx配置方式,本文有参考: CodeIgniter Nginx Rewrite Rule
2 CodeIgniter URLs & Nginx
3 lighttpd rewrite rule && apache mod_rewrite
在公网的服务器不免遭到颇有居心的人尝试登录,以便控制机器,如果你没有做防范工作,那就要注意了。
至少,你可以先看看你的服务器是不是遭人喜欢:

grep "Failed password for root" /var/log/secure | awk '{print $11}' | awk -F ":" '{print $4}' | sort | uniq -c | sort -nr | more


你可以得到类似的结果:

引用
  68906 221.232.131.51
  20352 218.78.209.253
  19364 202.111.128.225
  17704 61.138.179.55
  15190 211.68.70.24
  14166 221.7.58.101
  13670 147.231.252.4
   9600 210.77.146.53
   7850 219.148.34.17
   7668 61.152.201.69
   7080 212.107.200.32
   6878 202.143.142.198
   6644 210.51.4.93
   6504 202.30.194.186
   6378 60.191.93.125
   6254 60.195.250.54
   6090 58.247.222.202
   5806 60.217.229.228
   5640 219.141.223.8
   5424 218.94.72.125
   5358 61.143.178.194
   5292 219.150.161.20
   5284 221.130.201.21
   5252 211.157.98.65
   5052 220.182.6.9
   5028 211.142.221.204
   4760 203.78.66.213
   4672 59.120.111.226
   4531 88.84.130.52


密码的强度要注意

事情可能远比你想象的严重,可以想象,被尝试到正确的密码是多么的危险。
将近7万次的尝试,可以尝试很多组合了,但其实也未必那么轻易能够破解密码的,前提是你不要使用简单的字母组合。

简单的计算一下你用四位密码的强度:
如果单纯用小写字母,那有 26^4=456976 个可能
但小写和大写配合呢? 7311616 个可能
如果加上数字和特殊字符,那可能性是 40960000 以上

如果暴力破解,一秒一个,那可能得多久?
126小时 -> 2000小时 -> 10000小时(1年多!)

其实破解密码也没有那么容易吧?但为了安全性,务必使用复杂的密码,长度足够长~

脚本是如何运行的?

回来简单的说一下脚本,分段说明,比较基础的知识:

grep "Failed password for root" /var/log/secure |
#取出root登录失败的记录
awk '{print $11}' |
#取出ip段(::ffff:189.19.29.21)
awk -F ":" '{print $4}' |
#取得ip(189.19.29.21)
sort |
#排序
uniq -c |
#计算每条记录的出现次数
sort -nr |
#按出现次数排序
more
Tags: , ,
使用postfix发送邮件,需要你对本身配置做些修正,另外,也需要你设置相应的DNS,否则发送邮件会容易当做垃圾邮件。

我们做几个步骤来看看收信的影响:

1 安装后不设置
2 设置hostname和domain
3 设置MX记录
4 设置SPF

以下说明的信息为了去除隐私信息,做过一些名称修改:

= 1 没有任何配置 =

引用
Delivered-To: your-email@gmail.com
Received: by 10.114.181.20 with SMTP id d20cs1238waf;
        Mon, 4 Jan 2010 17:33:21 -0800 (PST)
Received: by 10.141.90.17 with SMTP id s17mr7576023rvl.196.1262655201126;
        Mon, 04 Jan 2010 17:33:21 -0800 (PST)
Return-Path:
Received: from localhost.localdomain ([219.232.1.2])
        by mx.google.com with ESMTP id 20si58728702pwj.8.2010.01.04.17.33.18;
        Mon, 04 Jan 2010 17:33:19 -0800 (PST)
Received-SPF: neutral (google.com: 219.232.1.2 is neither permitted nor denied by best guess record for domain of root@localhost.localdomain) client-ip=219.232.1.2;
Authentication-Results: mx.google.com; spf=neutral (google.com: 219.232.1.2 is neither permitted nor denied by best guess record for domain of root@localhost.localdomain) smtp.mail=root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
  id 7BF5120DF2C; Mon,  4 Jan 2010 21:33:09 -0500 (EST)
To: your-email@gmail.com
Subject: test in 95
Message-Id: <20100105023309.7BF5120DF2C@localhost.localdomain>
Date: Mon,  4 Jan 2010 21:33:09 -0500 (EST)
From: root@localhost.localdomain (root)

test


我们看到,发信人是root@localhost.localdomain,明显不对的
回复邮件也肯定收不到,我们至少需要用户能够回复,当然,除非你不想。

= 2 设置hostname和domain =

postconf -e "myhostname=aslibra.com"
postconf -e "mydomain=mail.aslibra.com"
postfix reload


postfix里面修改参数可以用以上的方式,检查参数
可以是 postconf myhostname
Tags: , , ,
这两天路由器感觉有点神,ping都能够有1秒的时间,被人骂死。
原先以为是无线有问题,给加了一个无线,结果还是不如意,失望,看来这小小的tp-link已经满足不了现在的需求了。

唠叨一下:

对于我这个不明真相的群众,最好的办法是更换一个路由器,看看是否凑效,笨人有笨方法。
把以前的一个路由器领了出来,还积尘了。。抹干净,准备测试。。
发现忘记哪个端口是内网了,忘记设置的什么ip了!怎么办?
端口扫描 nmap 对几个网段和几个端口都扫描了,一无所获,该死的路由器。
有空整理一些nmap的用法,很有用。
我找reset的地方,没有,遂拿来螺丝刀,开盖检查是否在机器里面,结果还是失望,原来d-link安全性那么好!
里面那么简单,居然套那么大的一个壳,网上搜了才知道,必须用console线才能重置,可没这个线,你说倒霉不?

最后一招了,用局域网的服务器做网关!
这个想法一直就有,自从有限速的需求以来,就有这个想法打造一个,看来这次势在必行。

其实linux网关很简单:

1 打开机器的转发功能
2 把转发的包给nat一下,发出去
(nat/ network address Translation 网络地址转换)

看看最简单的脚本:

#code from http://aslibra.com/
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F
iptables -t nat -F
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE


如上面所说的,其实这里就完成了两个事情
第一个echo是启用转发功能
-F的语句是清空iptables的规则
-P的语句是设置转发默认为接受,不明确为允许是转发不成功的
最后一句就是给转换一下,发出去,变成公网IP

从路由器转换到linux机器

路由器是192.168.1.1,机器ip为192.168.1.5
为了确保转换时间最少,我在机器上绑定一个eth1:1,也就是监听多一个ip
设置路由器的ip为192.168.1.2,然后迅速更改eth1:1的ip为原网关ip,完成,过程就几秒钟,不错
如果原来网关为dns解析,那机器上的named需要重启一下,因为named根据ip启动监听的,新启用ip不监听
可恶的named为什么不监听0.0.0.0?

附带问题:

另外,原路由器的端口转发将无效,所有的端口转发的目标机器后,网关已经改变,比如从192.168.1.2发出转发端口给192.168.1.4,处理完毕转到外网,发给网关192.168.1.1,这个数据包就是无效的了。
我用tcpdump检查了好久,发现是原先的转发的问题,导致很多流量很奇怪,去掉路由器的设置,重启就正常了。
Tags: , ,
总结一下:
1 口罩似乎没法防御病毒
2 避免病毒繁衍加重的方式:
A 常洗手、避免手触碰脸部
B 温盐水漱口和清洗鼻腔
C 增加VC,包含吃水果和VC片
D 多喝温开水和热汤


How to Prevent H1N1 - Best Advice So Far(如何预防H1N1 - 来自医生的忠告)

N95口罩是用来阻隔95% 的0.3μ微粒,,而H1N1病毒的大小是0.1μ左右。所以,靠N95口罩防H1N1就像用蚊帐来挡雨。

Tamiflu does not kill but prevents H1N1 from further proliferation till the virus limits itself in about 1-2 weeks (its natural cycle).H1N1, like other Influenza A viruses, only infects the upper respiratory tract and proliferates (only) there. The only portals of entry are the nostrils and mouth/ throat. In a global epidemic of this nature, it's almost impossible
not coming into contact with H1N1 inspite of all precautions.
流感疫苗不是用来杀死H1N1病毒,它只能抑制病毒在其1-2周的自然生存周期中繁衍,H1N1跟其他A型流感的病毒一样,感染部位只限于上呼吸道,并在那繁殖,它的唯一入侵途径是口鼻喉,这种全球性的流感,几乎无人能置身事外

Contact with H1N1 is not so much of a problem as proliferation is.
但接触到H1N1病毒,并不像H1N1传染的问题那么严重.

While you are still healthy and not showing any symptoms of H1N1 infection, in order to prevent proliferation, aggravation of symptoms and development of secondary infections, some very simple steps - not fully highlighted in most official communications- can be practiced (instead of focusing on how to stock N95 or Tamiflu):
当你身体健康,尚未出现H1N1感染症状时,更实用有效的办法(而不是只关注储备N95或流感疫苗),是用以下几种简单的方式来避免少量的H1N1病毒在你体内(如果有接触到的话)繁殖、出现病症、及恶化成二期感染:

1. Frequent hand-washing (well highlighted in all official communications).
常洗手(在所有的官方警示中,都有重点强调)

2. "Hands-off-the-face" approach. Resist all temptations to touch any part of face (unless you want to eat or bathe).
手绝不碰脸...除非是是吃东西和洗脸

3. Gargle twice a day with warm salt water (use Listerine if you don't trust salt). H1N1 takes 2-3 days after initial infection in the throat/nasal cavity to proliferate and show characteristic symptoms. Simple gargling prevents proliferation. In a way, gargling with salt water has the same effect on a healthy individual that Tamiflu has on an infected one.
Don't underestimate this simple, inexpensive and powerful preventative method.
每天用温盐水(或李斯德林漱口水,如果你不太相信盐水有效的话)漱口两次。H1N1在鼻喉腔内经过2-3天,才开始增生并出现症候,简单的盐水漱口可以抑制病毒繁衍,等于是健康人的流感疫苗,千万不要小看这看似简单、花费不多,但是很有效的办法。

4.. Similar to 3 above, clean your nostrils at least once every day with warm salt water. Not everybody may be good at Jala Neti or Sutra Neti (very good Yoga asanas to clean nasal cavities), but blowing the nose hard once a day and swabbing both nostrils with cotton buds dipped in warm salt water is very effective in bringing down viral population.

以上三点之外,每天用温盐水清洗鼻孔至少一次,不是每个人都会用专业的清洗鼻腔的办法,但吸口气用力将鼻内物质喷出,最后以棉花棒沾温盐水清洁鼻孔 。这对降低鼻中的病毒量非常有效。
Tags:
分页: 7/53 第一页 上页 2 3 4 5 6 7 8 9 10 11 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐