Nginx学习笔记(二)——编译安装步骤详解、Nginx性能优化、Nginx主配置文件详解

一、Nginx相关问题

1.1 Nginx是如何处理一个请求的呢?

(1)nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址;然后在nginx的master进程里面,先初始化好这个监控的socket,再进行listen;然后再fork出多个子进程出来, 子进程会竞争accept新的连接。

(2)此时,客户端就可以向nginx发起连接了。当客户端与nginx进行三次握手,与nginx建立好一个连接后;

(3)此时,某一个子进程会accept成功,然后Nginx创建对连接的封装,即ngx_connection_t结构体。接着,根据事件调用相应的事件处理模块,如http模块与客户端进行数据的交换。

(4)最后,nginx或客户端来主动关掉连接,到此,一个连接就完成了。

1.2 Nginx为什么不使用多线程?为什么性能这么高?nginx是如何实现高并发的?

(1)例如Apache服务器的工作原理,创建多个进程或线程,而每个进程或线程都会为其分配cpu和内存,但是并发过大会榨干服务器资源。由于web server的工作性质决定了每个request的大部份生命都是在网络传输中,实际上花费在server机器上的时间片不多。这是几个进程就解决高并发的秘密所在。即webserver刚好属于网络io密集型应用,不算是计算密集型。

(2)所以Nginx,采用单线程异步非阻塞处理请求,运用epoll模型,提供了一个队列,排队解决,不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx支持更高的并发。

(3)Nginx会有一个master主进程,一个master对应多个worker工作进程,每个worker工作进程可以处理多个请求,每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到可能发生阻塞的地方,比如向后端服务器转发request,并等待请求返回。那么,这个处理的worker继续处理其他请求,而一旦后端服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。

二、Nginx的编译安装及调优

1 编译安装

1、 解压

1)解压tar包: tar zxf nginx-1.15.7.tar.gz
2)隐藏nginx版本,防止被攻击:vim nginx-1.15.7/src/core/nginx.h
在这里插入图片描述
nginx-1.15.9目录里的内容

1)auto目录:里面有4个子目录,cc是编译使用的,os是判断操作系统类型的,其他都是辅助configure编译的,也就是操作系统有什么特性供nginx使用
2)CHANGES:各版本的改变,bug修复等信息;CHANGES.ru:nginx作者是俄罗斯人,这是俄罗斯版本
3)conf: 为了方便运维配置,conf目录里有示例文件,安装好后会拷贝到安装目录
4)configure 
5)contrib:提供nginx语法检测字体
   cp -r contrib/vim/* ~/.vim	##家目录下如果没有.vim目录,手动新建
6)html:默认发布目录,50x.html是报500错误时的页面
7) src:源码目录

修改文件 /nginx-1.15.9/src/core/nginx.h

#define NGINX_VER          "nginx/" NGINX_VERSION
改为:
#define NGINX_VER          "nginx/"	 

在这里插入图片描述
3) 在Nginx源码 /auto/cc/gcc文件中:  vim auto/cc/gcc

  • 在此Debug模式模式会插入许多追踪和ASSERT之类的信息,在正常编译过程中结束,会产生几兆大小的包,我们可以在编译之前关闭debug模式,这样在编译结束,只会产生几百K左右的包大小。
# debug
#CFLAGS="$CFLAGS -g" ##本行注释掉,关闭debug日志模式,  

在这里插入图片描述
在这里插入图片描述

2、编译安装nginx

1)解决依赖性,安装gcc编译器和openssl-devel: yum install gcc openssl-devel pcre-devel -y
2)在 /root/nginx/nginx-1.16.1目录下编译:

yum install gcc openssl-devel pcre-devel -y
yum install gd-devel-2.0.35-26.el7.x86_64.rpm -y	#这个安装包不是yum源中有的,需要在网上自行下载

3)编译安装nginx

cd nginx-1.16.1
./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_image_filter_module=dynamic --with-http_ssl_module
make && make install

注意:

  • 执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值