一.Nginx的特性和一些知识点
一.Nginx的特性和一些知识点
1.基本功能服务器
处理静态文件(静态资源的web),支持 反向代理服务器,支持缓存、负载均衡、支持FastCGI
模块化机制,非DOS机制,支持多种过滤器,如gzip,ssl和用来完成图形大小调整的图像模块
支持SSL
2.扩展功能
基于名称和IP做虚拟主机
支持keepalive
支持平滑配置更新和程序版本升级
定制访问日志,支持使用日志缓存以提高性能
支持URL rewrite
支持路径别名
支持基于IP和用户的认证
支持速率限制,并发数限制等
3.Nginx 的基本框架
一个master,生成一个或多个worker
事件驱动:kqueue,epoll,/dev/poll
消息通知:select poll
支持sendfile,sendfile64
支持mmap
4.Nginx 的优点:
1.在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
2.Nginx 作为负载均衡服务器:Nginx 可以作为HTTP代理服务器对外进行服务。Nginx采用C进行编写,在系统资源开销还是CPU使用率效果比较好;
3.作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器;
4. Nginx 是一个 [#installation 安装] 非常的简单 , 配置文件 非常简洁(还能够支持perl语法), Bugs 非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够 不间断服务的情况下进行软件版本的升级 .
5.Nginx 的事件模型
Nginx支持如下处理连接的方法(I/O复用方法),这些方法可以通过use指令指定。
Select 标准方法
Poll标准方法
Kqueue 高效方法。
二.Nginx 的配置文件简单介绍
1.正常运行的必备配置
a. user username [groupname]
以那个用户身份运行,可以在配置文件中指定,如果没有指定则以编译时的用户为运行用户
b. pid /path/to/pidfile_name
指定nginx的pid文件
c. worker_rlimit_nofile #
指定一个worker进程所能打开的最大句柄数
d. worker_rlimit_sigpending #
设定每个用户能够发往worker进程的信息的数量
2.优化性能相关的配置
a. worker_procrsses #
worker进程的个数,通常其数值应该为cpu的物理核心数减1或2
b. worker_cpu_affinity cpumask .....
用来绑定cpu的,比如
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
c. ssl_engine device
在存在ssl硬件加速器的服务器上,指定所使用的ssl硬件加速设备
d. timer_resolution t
每次内核事件调用返回时,都会使用gettimeday()来更新nginx缓存时钟,timer_resloution用来定义每隔多久才会由gettimeday()更新一次缓存时钟,x86-64系统上,gettimeday()代价已经很小,可以忽略此配置
c. worker_priority nice
-20到19之间的整数值,数值越小越优先被调用
3. 跟事件相关的配置
a. accept_mutex on | off
是否打开nginx的负载均衡器,此锁能够让多个worker轮流地、序列化的与新的客户端请求建立连接;
b. lock_file /path/to/lock_file
锁文件的位置
c. accept_mutex_delay #ms
使用accept锁以后,只有一个worker能取得锁 ,一个worker进程为取得accept锁的等待,即用户建立等待的时间,如果某worker进程在某次试图取得锁时失败了,则至少要等#ms才能再一次请求锁
d. multi_accept on | off
是否允许一次性地响应多个用户请求,默认为off
三. Nginx安装完毕后,会有响应的安装目录,安装目录里nginx.conf为nginx的主配置文件,
nginx主配置文件分为4部分,main(全局配置)、server(主机设置)、
upstream(负载均衡服务器设)和location(URL匹配特定位置的设置),
这四者关系为:server继承main,location继承server,
upstream既不会继承其他设置也不会被继承。
接下来分析nginx 的主配置文件的各项参数
首先切换到配置文件中
**************************************************************
Nginx的main(全局配置段)文件
**************************************************************
[root@stu21 ~]# vim /etc/nginx/nginx.conf
user nginx nginx; //指定nginx运行的用户及用户组为nginx,默认为nobody
worker_processes 2; //开启的进程数,一般跟逻辑cpu核数一致
error_log logs/error.log notice; //定于全局错误日志文件,级别以notice显示。还有debug、info、warn、error、crit模式,debug输出最多,crit输出最少,更加实际环境而定。
pid logs/nginx.pid; //指定进程id的存储文件位置
worker_rlimit_nofile 65535; //指定一个nginx进程打开的最多文件描述符数目,受系统进程的最大打开文件数量限制
events {
use epoll; 设置工作模式为epoll,除此之外还有select、poll、kqueue、rtsig和/dev/poll模式
worker_connections 65535; //定义每个进程的最大连接数 受系统进程的最大打开文件数量限制
}
#**********************************************************************************************
Nginx的HTTP服务器配置段,Gzip配置。
#************************************************************************************************
http {
*****************************以下是http服务器全局配置*********************************
default_type application/octet-stream; //核心模块指令,这里默认设置为二进制流,也就是当文件类型未定义时使用这种方式
//下面代码为日志格式的设定,main为日志格式的名称,可自行设置,后面引用。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; //引用日志main
client_max_body_size 20m; //设置允许客户端请求的最大的单个文件字节数
client_header_buffer_size 32k; //指定来自客户端请求头的headebuffer大小
client_body_temp_path /dev/shm/client_body_temp; //指定连接请求试图写入缓存文件的目录路径
large_client_header_buffers 4 32k; //指定客户端请求中较大的消息头的缓存最大数量和大小,目前设置为4个32KB
sendfile on; //开启高效文件传输模式
tcp_nopush on; //开启防止网络阻塞
tcp_nodelay on; //开启防止网络阻塞
keepalive_timeout 65; //设置客户端连接保存活动的超时时间
client_header_timeout 10; //用于设置客户端请求读取超时时间
client_body_timeout 10; //用于设置客户端请求主体读取超时时间
send_timeout 10; //用于设置相应客户端的超时时间
//以下是httpGzip模块配置
#httpGzip modules
gzip on; //开启gzip压缩
gzip_min_length 1k; //设置允许压缩的页面最小字节数
gzip_buffers 4 16k; //申请4个单位为16K的内存作为压缩结果流缓存
gzip_http_version 1.1; //设置识别http协议的版本,默认是1.1
gzip_comp_level 2; //指定gzip压缩比,1-9 数字越小,压缩比越小,速度越快.
gzip_types text/plain application/x-javascript text/css application/xml; //指定压缩的类型
gzip_vary on; //让前端的缓存服务器存经过gzip压缩的页面
#nginx的server虚拟主机配置
#两种方式一种是直接在主配置文件中设置server字段配置虚拟主机,另外一种是使用include字段设置虚拟主机,这样可以减少主配置文件的复杂性。
#*****************************以下是server主机设置*********************************
server {
listen 80; //监听端口为80
server_name www.stu21.com; //设置主机域名
charset gb2312; //设置访问的语言编码
access_log logs/www.rsyslog.org.access.log main; //设置虚拟主机访问日志的存放路径及日志的格式为main
location / { //设置虚拟主机的基本信息
root sites/www; //设置虚拟主机的网站根目录
index index.html index.htm; //设置虚拟主机默认访问的网页
}
location /status { // 查看nginx当前的状态情况,需要模块 "--with-http_stub_status_module"支持
stub_status on;
access_log /usr/local/nginx/logs/status.log;
auth_basic "NginxStatus"; }
}
server {
listen 80;
server_name www.stu21.com;
location / {
root /nginx/htdocs;
index index.html index.htm;
}
}
}
注解:server段是在http段里的,而location段是在server段里的;
一.Nginx的特性和一些知识点的更多相关文章
- 浅谈Nginx以及特性
Nginx以及特性 1.Nginx是什么? Nginx是一个高性能的HTTP和反向代理轻量级web服务器,特点:占用内存少,处理并发能力强.Nginx专为性能优化而开发,性能是其最重要的考量 ,能经受 ...
- http服务器搭建之apache与nginx的特性
一.了解一些简单的概念 HTTP服务器程序: httpd(apache) nginx lighttpd(功能和nginx差不多,活跃度不如ng) 应用程序服务器: IIS Tomcat(开源jsp容器 ...
- Nginx的特性与核心类别及配置文件和模块详解
1.root path 设置web资源路径,用于指定请求的根文档目录,从根开始匹配 root:root/URI 2.alias path 指定路径别名,只能用于location中,从最后一个/开始匹配 ...
- 【转】PHP利用Apache、Nginx的特性实现免杀Webshell
转载备忘: get_defined_vars().getallheaders()是两个特性函数,我们可以通过这两个函数来构造我们的webshell. 前几天看到的,一直忘记写,填坑. 环境 函数 用法 ...
- Nginx的特性功能-反向代理、负载均衡、缓存、动静分离、平滑升级
反向代理 nginx配置文件 events { } 事件驱动 httpd { } 关于httpd相关的配置 server { } 定义虚拟主机 location { } ...
- nginx重要特性
反向代理负载均衡实现高并发 1.反向代理反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果返回给 ...
- Nginx高级特性实操
导读 nginx从入门到精通,点我直达 下载nginx与安装 点我直达 安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl opens ...
- 2-4、nginx特性及基础概念-nginx web服务配置详解
Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...
- Nginx 安装 和 特性介绍
一:nginx 环境搭建 四项确认 确认系统网络可通行 确认yum可用 确认关闭iptables规则 确认停用selinux 查看iptables规则 iptables -L 关闭iptables规则 ...
随机推荐
- iOS开发——实用篇&KVO与KVC详解
KVO与KVC详解 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC ...
- mysql 面试
数据库的重要性是所有技术里最核心最需要掌握的(理解原理,并且被面试时能清晰的表达出来),直接决定运维人员薪水的高低! 所有题都要给出专业的解答方案,不是很水的那种泛泛的解答. 面试题001:什么是My ...
- MHA手动切换 原创1(主故障)
MHA提供了3种方式用于实现故障转移,分别自动故障转移,需要启用MHA监控: 在无监控的情况下的手动故障转移以及基于在线手动切换. 三种方式可以应对MySQL主从故障的任意场景.本文主要描述在无监控的 ...
- 进程间通信之FIFO
FIFO有时被称为命名管道.管道只能由相关进程使用,这些相关进程的共同祖先进程创建了管道.但是,通过FIFO,不相关的进程也能交换数据. FIFO是一种文件类型(参考http://www.cnblog ...
- Shell脚本的安全性
Shell脚本给管理和使用系统都带来了巨大的便利,然后在多用户系统中,也带来了许多安全性问题.在脚本中可能存在的安全性问题如下: (1)在脚本中使用cd命令,切换到不安全的目录执行脚本. (2)在脚本 ...
- javaweb学习总结十(xml解析<SAX以及DOM方式>)
一:XML解析技术 一般我们使用sun公司或者开源组织开发的工具包解析xml效率比较高. 1:jaxp解析xml,jaxp是sun公司开发的解析xml工具包 2:jaxp解析xml代码如下 a:获取d ...
- [未完成]关于DOM的总结
这样有什么好处吗? 一但这些东西变成了节点对象,意味着每一个节点对象都会有很多属性和行为提供出来. 如果div是一个对象,那么就可以针对这个对象调用其中的一些方法,对div操作. 这个操作可以包括,比 ...
- MSP430常见问题之LCD 显示驱动类
Q1:晶体一般都是接32768,然后使用液晶很正常.我打算将晶体接6M的替换32768,那么液晶还能正常显示吗A1:看你所用的LCM 模块时序极限是多少HZ,然后看6M情况下,MSP430去驱动LCM ...
- 逆向+两次bfs(UVA 1599)
为什么都说简单好想咧.坦白从宽看了人家的代码,涨了好多姿势,, http://blog.csdn.net/u013382399/article/details/38227917 被一个细节坑了.. 2 ...
- Netbackup磁带过期处理
bpexpdate -m <mediaid> -d 0 如果不通过,看是否被其他media server写入数据.使用 nbemmcmd -listhost 查看所有media serve ...