Nginx是一款轻量级的WEB服务器反向代理服务邮件服务器(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强,目前应用广泛。
Nginx基础
Nginx配置文件个人记录
USER:定义用户和组信息
Work_processes :定义核心数量(等于或小于总核心数)
Worker_cpu_affinity cpumask ...; (使用cpumask进行描述标识核心绑定的核心,也可直接设置auto)
CPU MASK:
00000001:0号cpu
00000010:1号cpu
也可直接标识为:
0001:0号cpu
0010:1号cpu
Worker_priority number;(设定worker进程的nice值,提高优先级【-20,19】
Worker_rlimit_nofile number;(worker进程能打开文件的上限)
Error_log
/usr/local/nginx/logs/error.log
info;(定义error_log错误日志它有几个级别【debug|info|notice|warn|error|crit】其中crit记录的信息最少,依次向前会获得更加详细的错误信息
events {
Use epoll; (nginx默认就是epoll模式)
worker_connections 1024; (单个进程最大连接数,根据硬件调整到最佳状态)
}
Accep_mutex on | off;(处理新的连接请求的方法;on意味由各worker轮流处理请求,off意味着每个新请求的到达都会通知所有的worker进程;
http段描述
Log_format 日志格式描述,设定输出的信息内容
Access_log /var/log/nginx/access.log main; (设置访问日志输出的路径)
Sendfile on;(开启高效文件传输模式)
Tcp_nodelay on | off (在keepalived模式下:off会有延迟 on 将不打包直接发送无延迟)
Tcp_nopush on | off (开启等待首部一起发送)
Keepalive_timeout 65;(长链接超时时间)
Keepalive_requests 100; (一次长链接允许请求的资源最大数量,默认100)
Keepalive_disable msie6 (对那种浏览器禁用长链接)
Send_timeout 60; (发送响应的超时时间)
Include mime.types; (Include载入文件扩展名与文件类型映射表)
Default_type application/octet-srteam; (默认文件类型)
以下是SERVER配置端的描述
Server {
Listen 80;(监听某个端口或某个地址的某个端口)
Server_name www.stu56.xin;(设置服务器主机名称)(default_server默认虚拟主机)
Root /web/www/test/; (设置站端根目录)
Index index.html;(设置默认资源)
}
Location 【 = | ~ | ~* | ^~ 】(在server配置中会有多个location段,用于实现URI到文件系统的路径映射;nginx会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置)
= :对URI做精确匹配;
Location = /admin/ {
...
}
~:对URI做正则表达式模式匹配,区分字符大小写;
~*:对URI做正则表达式模式匹配,不区分字符大小写;
^~:对URI的左半部分做匹配检查,不区分字符大小写;
不带符号:匹配起始于此URI的左右URI;
匹配优先级:=,^~,~/~*,不带符号;
}
Ngx_http_access_module模块
实现基于ip的访问控制功能,给网页设置用户加密
使用htpasswd 创建密码文件
-c :创建一个加密文件 -m:默认采用MD5算法加密
设置白名单:放行172.16.250.76 拒绝 172.16.253.162;
设置nginx的状态status页面
Ngx_http_gzip_module
Gzip on; 开启gzip压缩输出
Gzip_http_version 1.0; 压缩版本(默认1.1)
Gzip_comp_level 3;压缩等级
Gzip_types application/javascript; 压缩类型,
用文件测试后,会有一定压缩比例,有助于生产环境中降低带宽占用
Ngx_http_rewrite_module 将用户请求的URI基于regex所描述的模式进行检查,而后完成替换
Rewrite_log on | off (是否开启重写日志记录)
Ngx_http_referer_module模块;
Valid_referers none | blocked |server_names | srting...
None :请求报文首部没有referer首部;
Blocked:请求报文的referer首部没有值
Server_names:参数,其可以有值作为主机名或主机名模式;
Arbitrary_string: 直接字符串,但可以用*作通配符
Reqular expression :被指定的正则表达式模式匹配到的字符串:要用~打头,例如~.*\.magedu\.com;
以下是利用referers模块做的防盗链功能:
已经有配置好的俩台机器
在进行测试的盗链机器上插入一段另一台机器的图片链接
为限制前图片可以正常显示
以下是对server进行配置 加入referers项进行匹配,匹配到的进行路径重写,也可以直接做return返回错误
以下是测试的信息
Ngx_http_ssl_module
在nginx上做https加密访问
Ssl on | off 开启或者关闭https
这里配置保留80与443端口,保证http与https同时可以工作,所以对ssl on进行了注销;
Ssl_certiflcate_file; 当前虚拟主机使用pem格式文件
Ssl_certificate_kye ; 当前虚拟主机上与其证书匹配的私钥文件;
Ssl_prottocols sslv3 ; 设置ssl协议版本,默认为“tlsv1,tlsv1.1,tlsv1.2”
Ssl_session_cache off | none | builtin[:size] | [shard:name:size] 设置ssl缓存类型
Builtin[:size]:使用openssl 内建的缓存,此缓存为每个worker进程私有
[shared:name:size]:在各worker之间使用一个共享的缓存
(其中共享的缓存效率更高)
Ssl_session_timeout ; (客户端一侧的连接可以复用ssl_session_cache中缓存的ssl参数的有效时长)