nginx笔记-1

一、初识nginx

nginx的优点

 

1.rps优秀

2.可扩展性好,丰富的生态圈,占用内存少,并发力强

3.高可靠性,运行在企业内网的边缘节点

4.热部署,可以在不停止服务的情况下升级nginx,nginx进程不能kill

5.bsd许可证,开源,免费,可以修改源代码然后运行在商业化场景下

nginx适用于那些场景?

1.搭建轻量级web服务器,类似于Apache、Tomcat

2.搭建web服务集群,类似于lvs

3.静态资源服务,通过本地文件系统提供服务

4.反向代理服务,指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理方式实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处理的是tomcat。很多用到nginx的地方都是作为静态伺服器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。(https://blog.51cto.com/11601346/1908061

5.API服务

左图,从红线开始,一个web请求,先经过nginx,然后到达应用服务或者数据库/缓存服务。应用服务一般要求开发效率高,但是运行效率低,qps、tps、或者并发都是受限的,所以需要将这些应用服务组成一个集群,向用户提供高可用性的服务。但是一旦很多应用服务组成集群,就需要nginx的反向代理,将动态请求传到给用户。当用户增多后,就需要动态扩容、容灾,所以反向代理需要有负载均衡功能。其次,在这样一个链路中,nginx是处于企业内网的边缘节点,随着网络链路的增长,用户体验到的时延会增加,所以这时候就需要把一段时间内看起来不变的动态内容缓存到nginx本地,由nginx直接向用户提供资源访问。所以反向代理就衍生出了缓存的功能。而静态资源,比如图片、css等是没必要通过应用服务来访问的,而是通过本地文件系统提供服务,直接由nginx提供访问就可以了。TODO:第三个使用场景,API服务

nginx的主要组成部分

1.二进制可执行文件,nginx怎么处理请求

2.配置文件,nginx处理请求的方式

3.访问日志

4.错误日志 

nginx版本发布情况

 2004年开发至今,稳定版本都是双数的。

如何选择nginx版本?

  • 开源免费的nginx,商业收费的nginx plus,添加了运营监控,整合了第三方模块。
  • 阿里巴巴的tengine是在nignx基础上开发的开源的web项目。
  • 免费版openResty和商业版openResty。

编译合适自己的nginx?如何安装nginx?

yarn  apt-get可以直接安装nginx

nginx的二进制文件,会把模块直接编译进来,如果要添加第三方模块,就必须自己重新编译nginx才能添加成功。

下载nginx:   wget  https://nginx.org/download/nginx-1.18.0.tar.gz 

解压: tar -xzf nginx-1.18.0.tar.gz

本地vim支持nginx语法的配置(比如语法高亮功能),配置命令:cp -r contrib/vim/*  ~/.vim/

查看配置help:nginx-1.18.0 ./configure --help

编译步骤:

1.生成编译环境,指定安装目录等配置,怎么编译,比如:nginx-1.18.0 ./configure --prefix=/Users/xiaohuochai/Desktop/nginx   prefix指定了nginx的安装目录

结果,还可以通过--user  --group添加用户和组:

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/Users/xiaohuochai/Desktop/nginx"
  nginx binary file: "/Users/xiaohuochai/Desktop/nginx/sbin/nginx"
  nginx modules path: "/Users/xiaohuochai/Desktop/nginx/modules"
  nginx configuration prefix: "/Users/xiaohuochai/Desktop/nginx/conf"
  nginx configuration file: "/Users/xiaohuochai/Desktop/nginx/conf/nginx.conf"
  nginx pid file: "/Users/xiaohuochai/Desktop/nginx/logs/nginx.pid"
  nginx error log file: "/Users/xiaohuochai/Desktop/nginx/logs/error.log"
  nginx http access log file: "/Users/xiaohuochai/Desktop/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

// 并且这个时候,nginx会出多一个objs的目录

nginx-1.18.0 ll


total 1528

-rw-r--r--@  1 xiaohuochai  staff   296K  4 21 22:09 CHANGES

-rw-r--r--@  1 xiaohuochai  staff   451K  4 21 22:09 CHANGES.ru

-rw-r--r--@  1 xiaohuochai  staff   1.4K  4 21 22:09 LICENSE

-rw-r--r--   1 xiaohuochai  staff   432B  7 30 19:45 Makefile

-rw-r--r--@  1 xiaohuochai  staff    49B  4 21 22:09 README

drwxr-xr-x@ 25 xiaohuochai  staff   800B  4 21 22:09 auto

drwxr-xr-x@ 11 xiaohuochai  staff   352B  4 21 22:09 conf

-rwxr-xr-x@  1 xiaohuochai  staff   2.4K  4 21 22:09 configure

drwxr-xr-x@  6 xiaohuochai  staff   192B  4 21 22:09 contrib

drwxr-xr-x@  4 xiaohuochai  staff   128B  4 21 22:09 html

drwxr-xr-x@  3 xiaohuochai  staff    96B  4 21 22:09 man

drwxr-xr-x   8 xiaohuochai  staff   256B  7 30 19:45 objs

drwxr-xr-x@  9 xiaohuochai  staff   288B  4 21 22:09 src

 

2.开始make编译,准备安装文件:nginx-1.18.0 make

编译完成后,编译的文件也都放在了objs文件夹下。

3.编译安装: nginx-1.18.0 make install

这时候,打开之前prefix指定的安装目录,就可以看到安装文件了。

nginx每个文件都是干什么的?

auto目录:cc目录是用于编译的,os是用于操作系统判断的,libs就是一些库文件,其他文件都是用老辅助conf配置文件运行的

conf目录:示例文件,教大家如何配置nginx

contrib目录:提供vim工具和编码的脚本

html目录:index和50x的文件

man目录:linux对nginx的帮助文件

src目录:nginx源代码

nginx配置文件的通用语法介绍

 

 http模块支持的指令块,非http模块是解析不了这些指令的:

这是淘宝出的《nginx开发从入门到精通》 

 https://tengine.taobao.org/book/

原文地址:https://www.cnblogs.com/catherinezyr/p/13399709.html