防盗链是很多下载类网站必须做的工作,各个网站会采取不同的策略来实现这一功能,各有优缺点。下面介绍一下Linux主机Nginx服务器下利用 accesskey模块实现Nginx服务器深度防盗链的方法。比起常用的通过判断referer的方法,其防盗链能力更加强劲,就算迅雷什么的也没有办法对付。
一、如何为nginx安装accesskey模块
首先下载Nginx-accesskey模块:http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz
#tar zxvj nginx-accesskey-2.0.3.tar.gz
比如说这时候文件解压到/usr/src/nginx-accesskey-2.0.3
修改其目录下的config文件
#vi ./config
将”$HTTP_ACCESSKEY_MODULE”替换成”ngx_http_accesskey_module”
杀死nginx进程
#kill `cat /usr/local/nginx/nginx.pid`
来到nginx的源代码目录下面 /usr/src/nginx-0.7.54,重新编译nginx
#cd /usr/src/nginx-0.7.54/
#./configure –add-module=/usr/src/nginx-accesskey-2.0.3
(注意:其他nginx编译参数请按照自己的需要添加,这里省略未写)
#make && make install 继续阅读 »
今天在逛nginx wiki时才发现原来nginx 自带了这个功能
这是一个添加子域名(或是当DNS已指向服务器时添加一个新域名)的简单方法。需要注意的是,我已经将FCGI配置进该文件了。如果你只想使服务器为静态文件服务,可以直接将FCGI配置信息注释掉,然后将默认主页文件变成index.html。
这个简单的方法比起为每一个域名建立一个 vhost.conf 配置文件来讲,只需要在现有的配置文件中增加如下内容:
# Replace this port with the right one for your requirements
# 根据你的需求改变此端口
listen 80; #could also be 1.2.3.4:80 也可以是1.2.3.4:80的形式
# Multiple hostnames seperated by spaces. Replace these as well.
# 多个主机名可以用空格隔开,当然这个信息也是需要按照你的需求而改变的。
server_name star.yourdomain.com *.yourdomain.com www.*.yourdomain.com;
#Alternately: _ *
#或者可以使用:_ * (具体内容参见本维基其他页面)
root /PATH/TO/WEBROOT/$host;
error_page 404 http://yourdomain.com/errors/404.html;
access_log logs/star.yourdomain.com.access.log;
location / {
root /PATH/TO/WEBROOT/$host/;
index index.php;
}
继续阅读 »
一个资源下载站,架构是使用LVS调度后端1组机器,这样可以分流带宽压力
1组几十台服务器当然不可能一台一台的去上传了,于是就做成上传到一台,其他服务器使用rsync定期从这台同步资源
最近接到需求方的需求:使用同步机制,当资源上传完在同步的过程中,或者说同步失败时,资源下载就会失败,如何避免这种情况发生
经过调研后确定了两种方法:
1、404错误转向
因为后端都使用nginx,所以在nginx里设置当遇到文件找不到404时自动跳到源机器上,当然这样是要求做一个指向源服务器的单独域名
该方法测试通过,已正式部署实施
在Nginx的Server中添加404自动转向的代码:
error_page 404 http://dl2.sj.91.com$request_uri;
2、使用反代方式:
做个rewrite,如果404,那么利用nginx的反代功能到后端获取资源,该方法只在头脑中,还没有测试和使用,后面若经过测试,会把添加方法加上来
由于需要利用Nginx 在网通做一个电信的反代(动态网页),目前公司所有的站点都在电信,那么Nginx反代就需要做成高可用性,防止单点故障,于是就想到了做HA的强劲软件keepalived,keepalived做LVS健康检测的资料倒是比较多,不过做双机的资料不多,自己看了官方资料,利用VRRP做了双机高可用,特此记录:
1、服务器IP部署:
(1), Master(eth0:58.22.XXX.207/27接外网; eth1:10.2.1.207/8接内网)
(2), Backup(eth0:58.22.XXX.208/27接外网; eth1:10.2.1.208/8接内网)
VIP:58.22.XXX.202
网关:58.22.XXX.192
2、软件下载解压:
wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
tar zxvf keepalived-1.1.15.tar.gz
cd keepalived-1.1.15
3、编译安装
./configure –prefix=/
make
make install
这里需要动态链接库的支持,因为本例是使用Centos,所以可以直接使用yum 安装:
libpopt-dev
libssl-dev
继续阅读 »
Apache:
【apache配置禁止访问】
1. 禁止访问某些文件/目录
增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:
Order allow,deny
Deny from all
禁止访问某些指定的目录:(可以用 来进行正则匹配)
Order allow,deny
Deny from all
通过文件匹配来进行禁止,比如禁止所有针对图片的访问:
Order allow,deny
Deny from all
继续阅读 »
生成证书:
可以使用下面命令可以生成测试用的证书:
openssl req -new -keyout key.pem -nodes -x509 -days 365 -out cert.pem
如果要生成一个证书请求用于申请正式证书请用下面两个命令:
1.生成私钥 openssl genrsa -out key.pem 1024
2.生成待签名证书 openssl req -new -out req.csr -key key.pem
然后将req.csr文件中的内容提交给证书颁发机构。
一、Nginx:
1、编译nginx的时候加上
–with-http_ssl_module
2、站点server配置文件:
server {
listen 443;
server_name ndtest.91linux.cn;
ssl on;
ssl_certificate /usr/local/nginx/conf/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/key.pem;
keepalive_timeout 70;
……
}
继续阅读 »
Nginx以其良好的并发性能,目前正在逐渐取代Apache成为大家的Web server首选,但是Nginx目前的中文资料很少,需要大家努力贡献。
下面我介绍一下Nginx的Rewrite模块设置及Wordpress和Discuz的示例。Nginx的Rewrite规则比Apache的简单灵活多了,从下面介绍可见一斑。
首先,Nginx可以用if进行条件匹配,语法规则类似C,举例如下:
if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /msie/$1 break;}
1、正则表达式匹配,其中:
~ 为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
2、文件及目录匹配,其中:
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
继续阅读 »