Nginx学习

Nginx是俄罗斯人编写的一款高性能的HTTP和反向代理服务器,在高连接并发的情况下,它能够支持高达50000个并发连接数的响应,但是内存、CPU等系统资源消耗却很低,运行很稳定。目前Nginx在国内很多大型企业都有应用,据最新统计,Nginx的市场占有率已经到33%左右了。而Apache的市场占有率虽然仍然是最高的,但是是呈下降趋势。而Nginx的势头很明显。选择Nginx的理由也很简单:第一,它可以支持5W高并发连接;第二,内存消耗少;第三,成本低,如果采用F5、NetScaler等硬件负载均衡设备的话,需要大几十万。而Nginx是开源的,可以免费使用并且能用于商业用途

Nginx的作用

1.路由功能:域名/路径,进行路由选择后台服务器

2.负载功能(与高并发可用对应):对后台服务器集群进行负载

3.静态服务器(比tomcat性能高很多):在mvvm模式中,充当文件读取职责

总结:实际使用中,这三项功用,会混合使用。比如先分离动静,再路由服务,再负载机器

正向代理与反向代理

1、代理:客户端自己请求出现困难。客户请了一个代理,来代自己做事,就叫代理。

​ 比如代理律师,代购,政府机关办事的代理人等等。

2、反向代理,服务端推出的一个代理招牌。

nginx模型概念

Nginx会按需同时运行多个进程:

一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。

所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间通信。

主进程以root用户身份运行,而worker、cache loader和cache manager均应以非特权用户身份(user配置项)运行。

主进程主要完成如下工作:

  1. 读取并验正配置信息;

  2. 创建、绑定及关闭套接字;

  3. 启动、终止及维护worker进程的个数;

  4. 无须中止服务而重新配置工作特性;

  5. 重新打开日志文件;

worker进程主要完成的任务包括:

  1. 接收、传入并处理来自客户端的连接;

  2. 提供反向代理及过滤功能;

  3. nginx任何能完成的其它任务;

nginx.conf配置文件结构

在这里插入图片描述

#user  nobody;  #主模块命令, 指定Nginx的worker进程运行用户以及用户组,默认由nobody账号运行。
worker_processes  1;#指定Nginx要开启的进程数。
worker_rlimit_nofile 100000;  #worker进程的最大打开文件数限制
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
use epoll;
worker_connections  1024;
}

以上这块配置代码是对nginx全局属性的配置。

user :主模块命令, 指定Nginx的worker进程运行用户以及用户组,默认由nobody账号运行。

worker_processes: 指定Nginx要开启的进程数。

error log:用来定义全局错设日志文件的路径和日志名称。

​ 日志输出级别有debug,info,notice,warn,error,crit 可供选择,其中debug输出日志最为详细,面crit(严重)输出日志最少。默认是error

pid: 用来指定进程id的存储文件位置。

event:设定nginx的工作模式及连接数上限,

​ 其中参数use用来指定nginx的工作模式(这里是epoll,epoll是多路复用IO(I/O Multiplexing)中的一种方式),

​ nginx支持的工作模式有select ,poll,kqueue,epoll,rtsig,/dev/poll。

​ 其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,对于linux系统,epoll是首选。

​ worker_connection是设置nginx每个进程最大的连接数,默认是1024,所以nginx最大的连接数max_client=worker_processes * worker_connections。

​ 进程最大连接数受到系统最大打开文件数的限制,需要设置ulimit。

下面部分是nginx对http服务器相关属性的设置

http {
    include       mime.types;               主模块命令,对配置文件所包含文件的设定,减少主配置文件的复杂度,相当于把部分设置放在别的地方,然后在包含进来,保持主配置文件的简洁
    default_type  application/octet-stream; 默认文件类型,当文件类型未定义时候就使用这类设置的。

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '   指定nginx日志的格式
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
    sendfile        on;   开启高效文件传输模式(zero copy 方式),避免内核缓冲区数据和用户缓冲区数据之间的拷贝。
    #tcp_nopush     on;  开启TCP_NOPUSH套接字(sendfile开启时有用)

    #keepalive_timeout  0;   客户端连接超时时间
    keepalive_timeout  65;

    #gzip  on;             设置是否开启gzip模块
#下面是server段虚拟主机的配置
server {
        listen       80;   虚拟主机的服务端口
        server_name  localhost;   用来指定ip或者域名,多个域名用逗号分开
        #charset koi8-r;
        location / {        
               #地址匹配设置,支持正则匹配,也支持条件匹配,这里是默认请求地址,用户可以location命令对nginx进行动态和静态网页过滤处理
            root   html;                   虚拟主机的网页根目录
            index  index.html index.htm;   默认访问首页文件
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }     
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值