分类 Nginx 下的文章

Nginx Cache按域名存放

From http://blog.meiu.cn/nginx-proxy_cache.html

在Nginx或者Tengine默认的cache都是按照一定的hash算法出来的,如果需要擦除某个域名下的全站cache,用purge只能通过遍历所有的url在实现,效率肯定是很低的。那么如果把cache按照域名存放那么清空起来就很快了。

修改 src/http/ngx_http_file_cache.c

在文件头声明函数部分加

- 阅读剩余部分 -

Nginx cache 命中率

location  / {
    proxy_redirect          off;
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout   180;
    proxy_send_timeout      180;
    proxy_read_timeout      180;
    proxy_buffer_size       128k;
    proxy_buffers           4 128k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    proxy_cache cache;
    proxy_cache_valid 200 304 1h;
    proxy_cache_valid 404 1m;
    proxy_cache_key $uri$is_args$args;
    add_header  Nginx-Cache "$upstream_cache_status";
    proxy_pass http://backend;
}

- 阅读剩余部分 -

Nginx 全站缓存

location / {
        proxy_cache cache_one;
        proxy_cache_valid  200 304 1d; #Cache for 1Days
        proxy_cache_key $host$uri$is_args$args;
        proxy_redirect      off;
        proxy_pass          http://1.1.1.1;
        proxy_set_header Host   $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_ignore_headers Cache-Control;
        proxy_hide_header Cache-Control;
        proxy_ignore_headers Expires;
        proxy_hide_header Expires;
        proxy_hide_header Set-Cookie;
        proxy_ignore_headers Set-Cookie;
}

- 阅读剩余部分 -

Nginx 变量设置

Nginx 设置变量

set $variable "value"; set指令对于域有要求,必须在 server 域内,要想设置全局变量可以用 map 实现。

map "value" $variable{
default "value";
}

这样就可以引用 $variable 变量了。

Nginx 日志格式可以自己定义,你想加个什么字符串之类的,比如在  access 日志前面加个 access 字符

串标记:

log_format access 'access $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';

那么产生的日志前面就会加了“access”字符串,当然也可以加Nginx自定义的变量,比如 $host。

自建CDN防御DDoS(1):知己知彼,建设持久防线

from http://www.infoq.com/cn/articles/anti-ddos-cdn-1


背景介绍


客服系统的主要业务是提供基于网页的实时动态的文字聊天,主要应用在各类网络商品销售、网站在线客服等领域,总用户数58万,同时在线活跃的用户约12万/天。

这些应用领域通常行业之间的竞争比较激烈,其中包括在线下无法名正言顺的灰色+暴利产业,导致竞争对手之间经常发动DDoS恶意攻击。但营销网站往往是单面加速,加上推广时效性很强,很难被彻底打击,于是一些自作聪明的黑客通过攻击网站的在线客服系统,导致网站无法跟访客沟通,不能交易,从而达到恶意攻击的目的。因此客服系统这个原本有助于网站营销的工具反而成了被攻击的主要对象,虽然伤得委屈,但也不得不面对挑战。

我们遭遇的DDoS攻击类型包括:延缓性的CC攻击和致命的大流量攻击。下面将对两种攻击方式的攻击特点、防御思路和我们用过的一些防御方案进行简单的介绍。

- 阅读剩余部分 -

nginx与squid 反向代理的区别

反向代理从传输上可以区分为同步模式和异步模式,apache的mod_proxy和squid都属于同步模式,nginx和lighttpd属于异步模式

同步模式是用户发起请求,请求立即被转到后端的服务器,于是在浏览器和后端服务器之间就建立了一个连接,在请求完成前这个连接是一直存在的。

而异步模式时,用户发起的请求会发送到nginx,nginx接收到所有的数据后在转发到后端的服务器,后端服务器处理完成后把数据返回给nginx,nginx在返回给用户。

由此可见如果用户发起的请求的数据比较大,或者用户端的网速比较慢,同步模式时后端服务器的连接数相对于异步模式会比较多,压力也比较大。

Nginx的cache比较适合处理大文件的,而squid的cache比较适合小文件的cache

Nginx ctrl+F5刷新

nginx添加ctrl+F5强制刷新功能配置

## Ctrl+F5 Cache Purge
if ($http_Cache_Control ~ "no-cache") {
# set $http_Cache_Control 'max-age=604800';
rewrite ^(.*)$ /purge$1 last;
}

Nginx Purge清除缓存配置

在编译安装Nginx的时候加上了Purge模块,来清除缓存.

www.firefoxbug.net/index.html ==>> www.firefoxbug.net/purge/index.html就能清除.

但是之前配置过程中出现了404,但是缓存明明是存在的,就是Purge不了.后来更改Purge的配置就OK了

## Cache_proxy Purge
location ~ /purge(/.*) {
	allow all;
	proxy_cache_purge cache_one $host$1$is_args$args;
	#proxy_cache_purge cache_one $host;
	error_page 405 =200 /purge$1;
	}

OpenCDN安装说明


OpenCDN管控中心安装


# wget http://ocdn.me/wp-content/down/ocdn_console_last.tar.gz
# tar -zxvf ocdn_console_last.tar.gz
# cd ocdn_console 
# ./install.sh

1

2

3

4

OpenCDN节点端安装


# wget http://ocdn.me/wp-content/down/ocdn_node_last.tar.gz
# tar -zxvf ocdn_node_last.tar.gz
# cd ocdn_node
# ./install.sh

1

2

OpenCDN管控中心卸载


5

OpenCDN节点端卸载


3