nginx运维

[置顶] Aiiphp框架测试版发布,欢迎测试!

[置顶] Linux常用运维命令和linux常用管理操作命令(整理)

[置顶] Linux/Window服务器安全配置等常用软件下载列表

openresty+Lua构建高性能、高可靠、安全的登陆校验

openresty+lua构建高性能、高可靠、安全的登陆校验,主要目的的访问伪造 cookie 进行登录。在webserver层进行校验,直接告诉应用层校验结果,就可以避免上面的问题。openresty+Lua就是这样一种webserver上安全、稳定、高性能的实现,并且开发成本低的方案。


新建,access.lua 代码:


local secretkey='1234567890abcdefghi'
if ngx.var.cookie_uid == nil or ngx.var.cookie_username == nil or ngx.var.cookie_token ==nil then
ngx.req.set_header("Check-Login", "NULL")
return
end


» 阅读全文

关键词: lua , openresty

nginx+lua 实现简单的防机器程序访问

这个比较简单,我只是觉得这个思路不错,借鉴了别人思路而已,可以学习。



    location /cookie {
   	    default_type 'text/html';
        rewrite_by_lua '
            local random = ngx.var.cookie_random

            if(random == nil) then
                random = ngx.md5(math.random(999999) .. os.time() .. math.random(999999))
            end

            local token = ngx.md5("opencdn" .. ngx.var.remote_addr .. random)
            if (ngx.var.cookie_token ~= token) then
                ngx.header["Set-Cookie"] = {"token=" .. token, "random=" .. random}
                return ngx.redirect(ngx.var.scheme .. "://" .. ngx.var.host .. ngx.var.uri)
            end
        ';
        content_by_lua_block {
            ngx.say("ok2")
    	}
    }
但是要注意了,这个不是万能神药,不能解决所有的问题。同时也要注意了,如果是蜘蛛的之类的也设置下白名单,因为他们可能获取不到 cookie 导致循环中。。。




利用openresty+lua+redis 实现封杀频繁恶意访问IP地址

      Nginx来限制访问控制的方法有多种,nginx主要有2个模块控制,但是那些不支持自定义,非常死,在大多数场景下并不实用。今天分享一个:利用openresty+lua+redis 实现封杀频繁恶意访问IP地址,当然这个方式也是有弊端的,那就是不断试用代理 IP之类的,但是用户还是有的,起码提高了恶意的成本。

      本人最近已经完全抛弃了淘宝的Tengine,原生态的nginx,已经换为春哥的 openresty,特别想说的一点就是淘宝的 low 逼货,感觉一堆问题,尼玛,可能和他缘分不够吧,哈哈,于是,换到春哥的 openresty。喜欢春哥的 openresty 的最重要的原因,不外乎openresty打包了 nginx 的时候,集成了很多的有用的扩展,特别是 lua,一个小巧的编程语言,各种爽歪歪。本文就是:openresty最新稳定版本+lua Lua 5.1.4+redis最新稳定版本 

     如果你是原生态的 nginx,那你就自己安装 lua 和 nginx 的扩展吧,或者直接安装 openresty so easy。

先在 http 中加载lua 包和 lua 的 c 包

lua_package_path "/usr/local/openresty/lualib/?.lua;;";

lua_package_cpath "/usr/local/openresty/lualib/?.so;;";

1.png - 大小: 85.62 KB - 尺寸: 934 x 482 - 点击打开新窗口浏览全图

» 阅读全文

关键词: lua , openresty , redis

nginx的rewrite语法和nginx系统变量【转】

语法: rewrite regex replacement flag

默认: none

作用域: server, location, if

This directive changes URI in accordance with the regular expression and the replacement string. Directives are carried out in order of appearance in the configuration file.

这个指令根据表达式来更改URI,或者修改字符串。指令根据配置文件中的顺序来执行。

Be aware that the rewrite regex only matches the relative path instead of the absolute URL. If you want to match the hostname, you should use an if condition, like so:

注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用if语句。

rewrite只是会改写路径部分的东东,不会改动用户的输入参数,因此这里的if规则里面,你无需关心用户在浏览器里输入的参数,rewrite后会自动添加的因此,我们只是加上了一个?号和后面我们想要的一个小小的参数 ***https=1就可以了。

» 阅读全文

关键词: rewrite语法 , nginx变量

Nginx安全配置:禁止HTML接受POST提交数据

有这样的场景,很多的网站有伪静态,html伪静态会到php代码执行,但是某些特殊情况下,php的核心文件被插入了后门,导致html 也可以接受POST请求,那问题来了,如何解决这个问题呢?

我提供的代码如下:


#forbid html_post data
set $forbid "";
if ( $request_method = "POST" ) {
	set $forbid "F";
}
 if ( $request_uri ~ .*\.(htm|html|shtml) ) {
	set $forbid "${forbid}F";
}
if ( $forbid = "FF" ) {
	return 404;
}
#end


关键词: post数据

nginx实现逻辑与运算,让if条件支持 and && 多重判断方法

nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现:

以下这样的形式,是不被nginx支持,写在这里只是为了方便理解:

if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {
    return 403;
}
真实可用的配置:


» 阅读全文

关键词: nginx逻辑与

分享一些常用的nginx全局变量,方便配置Nginx

经常需要配置Nginx ,其中有许多以 $ 开头的变量,经常需要查阅nginx 所支持的变量。

可能是对 Ngixn资源不熟悉,干脆就直接读源码,分析出支持的变量。

Nginx支持的http变量实现在 ngx_http_variables.c 的 ngx_http_core_variables存储实现:

» 阅读全文

关键词: nginx变量

nginx实时访问数据统计:ngxtop,实时监控web server的访问情况

nginx实时访问数据统计:ngxtop实时监控web server的访问情况 。ngxtop 允许你对 NGINX 的访问日志 (access log) 进行实时解析, 并输出类似 top 的有用信息。

ngxtop 是 python 脚本安装包,需要python支持。

对于python的包和库文件我们一般喜欢pip管理,没有安装的可以:


wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
python get-pip.py  #安装pip python包管理工具
pip install ngxtop  #下载安装ngxtop
使用

» 阅读全文

关键词: 实时监控 , ngxtop , nginx

Total: 18123Next ›