nginx服务器
nginx服务器
Nginx服务器(engine-X),是一种web服务器。它是一种开源的高性能HTTP和反向代理服务器。 它也可提供IMAP/POP3/SMTP代理服务等功能。
**Nginx是以多进程的方式来工作的。**也支持多线程的方式,只是主流的方式还是多进程的方式,也是Nginx的默认方式。
Nginx启动后,它在Unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。
master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
而基本的网络事件,则是放在worker进程中来处理了。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。
一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。
优点
-
高并发连接
官方测试能支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。Nginx服务器专为性能优化而开发。它支持内核Poll模型,能经受高负载的考验。
-
内存消耗少
Nginx服务器采取了分阶段资源分配技术,这使得它的CPU与内存占用率非常低。
-
配置文件简单
-
成本低 : Nginx服务器是开源软件。
-
支持Rewrite重写规则
能根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。
-
内置的健康检查功能.
若 Nginx服务器 Proxy 后端的某台 Web 服务器宕机,不会影响前端访问。
-
节省带宽.
支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
-
稳定性高.
Nginx服务器的稳定性很高。其它HTTP服务器在遇到访问峰值,或有人恶意发起慢速连接时,很可能会导致服务器物理内存耗尽,频繁交换,失去响应(只能重启服务器)。
另外, Nginx服务器采用master-slave模型,能充分利用SMP的优势,且能减少工作进程在磁盘I/O的阻塞延迟。
Nginx服务器代码质量很高,很规范, 模块扩展也很容易。Nginx服务器采用了一些os提供的最新特性如对sendfile (Linux2.2+),accept-filter(FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能。
Nginx和Apache的区别
相同点:
-
都是HTTP服务器软件;
-
功能实现上都采用模块化结构设计;
-
都支持通用的语言接口(如PHP、Perl、Python);
-
都支持正、反向代理,虚拟主机,URL重写,压缩传输,SSL加密传输等;
差别:
-
Apache处理速度较慢,且占用很多内存资源,而Nginx服务器却相反;
-
在功能实现上,Apache的所有模块都支持动、静态编译,而Nginx服务器模块都是静态编译的;
-
在处理连接方式上,Nginx支持epoll,而Apache不支持;
-
Nginx服务器安装包很小,只有几百KB;
安装Nginx
- Linux下yum安装
-
产生yum配置文件/etc/yum.repos.d/nginx.repo
-
编写如下内容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
其中OS可以选择:“rhel” or “centos”
OSRELEASE,选择6,或者7即可。
- yum install nginx就可以安装了。
-
Linux下源码安装
Nginx有模块依赖性,需要依赖下面3个包,才能源码编译安装。
-
gzip 模块需要zlib库
-
rewrite 模块需要pcre库
-
ssl 功能需要openssl库
-
Nginx的配置文件结构
nginx.conf由多个块组成。最外面的一块是main,main包含events和http,http包含多个upstream和多个server,server又包含多个location块:
![img](file:///C:\Users\john\AppData\Local\Temp\ksohtml\wps8D17.tmp.jpg)
main(全局设置)、server(虚拟主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。
Ø main块设置的指令将影响其他所有设置;
Ø server块的指令主要用于指定主机和端口,以及网站路径;
Ø upstream指令主要用于负载均衡,设置一系列的后端服务器;
Ø location块用于匹配网页位置;
这四者之间的关系:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
Nginx的全局配置
#指定使用的用户和组
#user nginx nginx;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#PID文件--存放进程号的文件
#pid logs/nginx.pid;
events配置
#工作模式及连接数上限
events {
#单个后台worker process进程的最大并发链接数
worker_connections 1024;
#并发总数是 worker_processes 和 worker_connections 的乘积
#Nginx服务器支持如下处理连接的方法(I/O复用方法),这些方法可以通过 use指令指定.
#use [ kqueue | rtsig | epoll | /dev/poll | select | poll];
use epoll; #使用 epoll(linux2.6的性能方式 )
}
注意: 服务器为linux时, 请用use epoll。 利用linux的内核提供性能优化方案。
http配置
http {
#Nginx服务器对HTTP服务器相关属性的配置
include mime.types;
default_type application/octet-stream;
#设定虚拟主机配置
server {
#侦听80端口
listen 80;
#定义使用 www.itsource.cn访问
server_name www.itsource.cn;
location {
}
location {
}
…..
}
server {
#侦听80端口
listen 80;
#定义使用 www.example.cn访问
server_name www.example.cn;
location {
}
location {
}
…..
}
}
-
include是个主模块指令。它实现对配置文件所包含的文件的设定,以减少主配置文件的复杂度。
-
default_type属于HTTP核心模块指令. 这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式。
-
server块的指令主要用于指定主机和端口(虚拟主机).
-
location部分主要用于匹配网页位置,设置不同的功能特征. 比如:缓存,重定向等…
什么是反向代理?
当以代理服务器来接受网络上的连接请求,再将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给网络上发出请求的客户端时,代理服务器对外就表现为一个反向代理服务器.
上一篇: java实现图片文件与Base64的互转
下一篇: Java添加、读取Excel公式