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核数一致。

优点
  1. 高并发连接

    官方测试能支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。Nginx服务器专为性能优化而开发。它支持内核Poll模型,能经受高负载的考验。

  2. 内存消耗少

    Nginx服务器采取了分阶段资源分配技术,这使得它的CPU与内存占用率非常低。

  3. 配置文件简单

  4. 成本低 : Nginx服务器是开源软件。

  5. 支持Rewrite重写规则

    能根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。

  6. 内置的健康检查功能.

    若 Nginx服务器 Proxy 后端的某台 Web 服务器宕机,不会影响前端访问。

  7. 节省带宽.

    支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。

  8. 稳定性高.

    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
  1. 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就可以安装了。
  1. Linux下源码安装

    Nginx有模块依赖性,需要依赖下面3个包,才能源码编译安装。

    • gzip 模块需要zlib库

    • rewrite 模块需要pcre库

    • ssl 功能需要openssl库

Nginx的配置文件结构

nginx.conf由多个块组成。最外面的一块是main,main包含events和http,http包含多个upstream和多个server,server又包含多个location块:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nQ7XTcC0-1600152737806)(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  {  

}..  

   }  

}  
  1. include是个主模块指令。它实现对配置文件所包含的文件的设定,以减少主配置文件的复杂度。

  2. default_type属于HTTP核心模块指令. 这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式。

  3. server块的指令主要用于指定主机和端口(虚拟主机).

  4. location部分主要用于匹配网页位置,设置不同的功能特征. 比如:缓存,重定向等…

什么是反向代理?

当以代理服务器来接受网络上的连接请求,再将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给网络上发出请求的客户端时,代理服务器对外就表现为一个反向代理服务器.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值