再分享一个优化过的生产环境nginx配置

作者:linux120 发布时间:November 21, 2013 分类:服务器配置

user www-data;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 100000;

events {
worker_connections 2048;
multi_accept on;
use epoll;
}

http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;

access_log off;
error_log /var/log/nginx/error.log crit;

keepalive_timeout 10;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 10;

limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 100;

include /etc/nginx/mime.types;
default_type text/html;
charset UTF-8;

gzip on;
gzip_disable "msie6";
gzip_proxied any;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

open_file_cache max=100000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

如何减小nginx主文件编译后的大小

作者:linux120 发布时间:August 12, 2013 分类:服务器配置

缺省配置和编译是带-g选项的,这样会使可执行文件变大,去掉-g就很小了。

另外还有debug信息。

编辑文件: nginx/auto/cc/gcc

找到debug项,注释掉。

重新configure 和make,现在只剩下几百k了。

利用Nginx实现简易CDN节点

作者:linux120 发布时间:July 2, 2013 分类:服务器配置

使用Nginx泛域名解析+反向代理+静态资源缓存。
安装nginx,安装过程不再赘述,记得带上pcre、gzip、sub、status这几个模块,另外如果想开通在线清理缓存功能,需要安装ngx_cache_purge这个第三方模块。
删除nginx.conf中默认的server段,此操作不做你会让你抱憾终身。
将以下代码插入nginx.conf尾部,-t测试-s reload重启即可。
#定义缓存的临时目录以及缓存存储目录
proxy_temp_path /data/temp;
proxy_cache_path /data/cache levels=1:2 keys_zone=cache_one:32m inactive=1d max_size=3g;
server
{
listen 80;
#接收泛域名解析,务必保证在这之前没有其他server段干扰。
server_name _;
root /tmp;
access_log off;

#匹配出对应域名
if ( $host ~* (.*)\.(.*)\.(.*))
{
set $domain $1;
}

location /
{
#定义所使用的缓存以及缓存的目录结构。
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_key $host$uri$is_args$args;
#下面这条灰常重要,告知upstream源服务器所要请求的域名是什么。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#把请求扔给upstream,然后等着领赏吧。
proxy_pass http://jp0129;
proxy_set_header Accept-Encoding "";
expires 1d;
}
location ~ .*\.(php)?$
{
#动态请求不缓存
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_pass http://jp0129;
proxy_set_header Accept-Encoding "";
}
}
upstream jp0129
{
server 106.187.51.139;
}
大功告成,根据自身情况上机器,每台部署一个nginx即可,在域名管理中把vcs.host789.com直接A记录几条轮询,配合一个小脚本来实现检测各个节点是否存活,节点宕掉就直接通过dnspod的api修改vcs.host789.com的解析记录,剔除无效节点即可。

如何查看nginx的运行状态

作者:linux120 发布时间:December 22, 2012 分类:服务器配置

首先要查看nginx的status需要在编译nginx的时候加上--with-http_stub_status_module

然后在nginx.conf的server段中定义类似如下内容:
location /status {
stub_status on;
access_log off;
allow SOME.IP.ADD.RESS;
deny all;
}
访问http://ip.ad.dr.ess/status
Active connections: 1597
server accepts handled requests
3077942 3077942 7823838
Reading: 41 Writing: 83 Waiting: 1473
active connections — 对后端发起的活动连接数 server accepts handled requests — nginx 总共处理了 3077942 个连接, 成功创建 3077942 次握手 (证明中间没有失败的), 总共处理了 7823838 个请求 reading — nginx 读取到客户端的Header信息数 writing — nginx 返回给客户端的Header信息数 waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading + writing),意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接