nginx
安装
下载源码包:wget path
安装:
./configure --prefix=安装目录 //安装过程可能报错,一般为缺少包(PCRE、zlib、openssl),根据报错提示安装
make & make install
启动:
./nginx/sbin/nginx
控制命令
./nginx //启动nginx
kill -INT pid //快速关闭nginx
kill -QUIT pid //优雅关闭
kill -HUP pid //重载配置文件,使用新配置运行
kill -USR1 pid //重读日志文件,即切换日志文件
kill -USR2 pid //平滑升级
kill -WINCH pid //平滑关闭旧进程
./nginx -s stop //快速关闭
./nginx -s quit //优雅关闭
./nginx -s reload //重载配置文件,使用新配置运行
./nginx -s reopen //重读日志文件,即切换日志文件
./nginx -t //测试配置文件是否出错
配置文件
worker_processes 1;#一般设置为cpu个数*cpu核心数
events {
worker_connections 1024;#一个工作进程允许的最大连接数
}
http {
#配置http服务
server {
#虚拟主机配置
}
}
虚拟主机
server {
listen 80;#监听的端口
server_name hostname.com;#监听的主机名、域名、ip
location / {
root html;
index index.html;
}
}
日志管理
date=`date -d yesterday +%Y%m%d`
logpath=/usr/local/logs/xxx.log
bakpath=/data/logs/
bakname=xxx.log.$date
bakfilepath=$bakpath/$bakname
mv $logpath $bakfilepath
touch $logpath
/usr/local/nginx -s reopen
location配置
location = pattern #精准匹配,如果匹配中的如果是目录,则会重新进行匹配
location pattern #普通匹配,匹配度越高,则使用
location ~ pattern #正则匹配
#匹配过程(默认匹配nginx目录下的html)
#精准匹配 > 正则匹配 > 普通匹配,精准匹配命中则不进行继续匹配,如果精准匹配未命中,则进行普通匹配,如果普通匹配有命中,则判断匹配度,以匹配度最高的为准,记忆匹配结果,如果有正则匹配,则以第一个匹配的为准,如果没有匹配则返回记忆结果
rewrite URL重写
if (cond){} #设定条件,在进行重写,if后面需要加空格,判断变量在前,条件在后,如果是文件判断则条件在前,变量在后,重写后重新匹配的url与开始的访问路径一致
set #设置变量
return #返回状态码
break #跳出rewrite,防止循环重定向
rewrite #重写url
#############################
rewrite regex rewriteaddr [break];#正则中如果有{},则需要将所有正则使用双引号包裹
gzip压缩
gzip on|off;#是否开启
gzip_buffers 32 4k|16 8k;#缓存块以及块大小
gzip_comp_level 1-9;#压缩级别
gzip_disable pattern;#不压缩的规则
gzip_min_length 200;#最小压缩长度
gzip_http_version 1.1;#压缩http协议版本
gzip_proxied #如果经过代理,设置缓存;
gzip_types text/plain application/xml;#压缩类型
gzip_vary on|off;#传输压缩标志
expires缓存
#在location和server中
expires 30s;#单位s,m,h,d等
#会在浏览器本地缓存读取已缓存的内容
反向代理
#反向代理到其他服务器
proxy_pass url|upserver_name;
proxy_set_header X-Forwarded-For $remote_addr;
负载均衡
upstream up_name {
[ip_hash;]#使用ip_hash算法进行负载均衡;
server address [params];
}
MemCache
set $memcached_key "$uri";#设置memchache的key
memcached_pass mc_addr;#memcache的地址
error_page 404 /callback;#如果发生错误回调的地址
第三方模块的安装
#重新编译
./configure -prefix=path --add-moudle=moudlepath
make & make install
#会生成一个nginx.old的可执行文件
高性能服务器架构
#优化思路
1.减少请求(合并css,js等,合并图片,添加缓存,减少查库,添加cdn)
2.添加服务器(服务器集群加负载均衡)
nginx统计模块使用 --with-http_stub_status_module 参数重新编译
location /status {
stub_status on;#开启统计模块
access_log off;#关闭日志
allow 127.0.0.1;#只允许指定ip访问
deny all;#禁止其他访问
}
#解决方案
worker_connections #修改工作进程最大链接数
worker_rlimit_nofile #修改nginx进程允许打开的文件数,全局配置
/proc/sys/net/core/somaxconn #加大进程最大连接数
/proc/sys/net/ipv4/tcp_tw_recycle #tcp快速回收 1开启
/proc/sys/net/ipv4/tcp_tw_reuse #tcp重用 1开启
/proc/sys/net/ipv4/tcp_syncookies #tcp洪水抵御 0关闭
ulimit -n 10000 #加大系统允许打开的文件数