001. Nginx场景,优点,组成部分和编译

news2024/11/15 21:46:31

目录

    • 一: Nginx三个重要的使用场景
    • 二: Nginx的优点
    • 三:Nginx文件的组成部分
    • 四:编译Nginx

一: Nginx三个重要的使用场景

  • 静态资源服务
    • 疑问:为什么需要静态资源服务?
    • 答: 在整个的web请求流程中(浏览器—> Nginx ----> Web服务器 ----> 数据库/缓存)有些静态资源, 没必要通过Web服务器再去寻找到这些资源, 比如: HTML, CSSS, JS, 图片等。因此我们可以将这些静态资源, 放在服务器上, 当服务请求到Nginx服务器的时候, 由Nginx服务器直接访问服务器上的资源, 然后立刻返回即可。
  • 反向代理服务
    • 疑问: 什么是反向代理?
    • 答:简言之, 代理多台web服务器, 浏览器对多台Web服务器是无感知的, 只知道将请求转发到代理服务器(Nginx)上即可。
    • 反向代理流程:由客户端发起对代理服务器的请求,代理服务器在中间将请求转发给某一个服务器,服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。
    • 疑问:为什么需要反向代理?
    • 答:随着业务的不断发展, 应用服务一般都是集群模式的, 因此会带来两个需求。 1: 横向扩容 2: 容灾。横向扩容就需要部署多台服务器, 而请求需要转发到那台服务器呢? 因此就需要Nginx具备负载均衡的能力。 容灾就是指的, 一旦某个业务服务出现问题, Nginx就将原本转发到这个服务器的请求, 转发给其他的服务器。基于这两点需求, Nginx必须具备反向代理业务服务器的功能。
  • API服务
    • 疑问:为什么需要API服务?
    • 答:有些请求, 功能简单, 没必要用业务服务器来实现, 而是直接访问数据库可以查询到。 而且数据库服务无论是稳定性还是并发能力, 都比业务服务器高的多。

二: Nginx的优点

  • 高并发, 高性能
    • nginx 可以达到数千万的并发能力
  • 可扩展性好
    • 模块化设计, 有丰富的生态圈
  • 高可靠
    • 持续运行, 不会挂掉
  • 热部署
    • 不用停止服务,进行升级。
  • BSD许可证
    • 开源, 可以对源码进行修改, 并应用到商业软件中

三:Nginx文件的组成部分

  • 二进制可执行文件
    • 各个模块编译出来的一些文件
  • 配置文件
    • nginx.conf
  • 日志文件
    • access.log
    • error.log

四:编译Nginx

  • 下载Nginx源码并解压
    • wget http://nginx.org/download/nginx-1.14.0.tar.gz
    • tar -zxvf nginx-1.14.0.tar.gz
  • 了解Nginx源码目录结构
drwxr-xr-x  13 kj  staff   416B  4 17  2018 .
drwx------+ 24 kj  staff   768B 12 31 16:00 ..
-rw-r--r--   1 kj  staff   280K  4 17  2018 CHANGES   # 版本特性和bugfix
-rw-r--r--   1 kj  staff   427K  4 17  2018 CHANGES.ru # 俄罗斯版本的
-rw-r--r--   1 kj  staff   1.4K  4 17  2018 LICENSE # 
-rw-r--r--   1 kj  staff    49B  4 17  2018 README
drwxr-xr-x  25 kj  staff   800B  4 17  2018 auto # 目录中存储:编译cc,依赖lib, 操作系统os, 类型types 
drwxr-xr-x  11 kj  staff   352B  4 17  2018 conf # 配置案例文件
-rwxr-xr-x   1 kj  staff   2.4K  4 17  2018 configure # 编译前的执行脚本文件
drwxr-xr-x   6 kj  staff   192B  4 17  2018 contrib # 高亮显示nginx配置
drwxr-xr-x   4 kj  staff   128B  4 17  2018 html # 提供了两个标准HTML: index.html和50x.html
drwxr-xr-x   3 kj  staff    96B  4 17  2018 man # 帮助文档
drwxr-xr-x   9 kj  staff   288B  4 17  2018 src # 源代码
  • 高亮显示nginx配置
    • cp -r contrib/vim/* ~/.vim/
  • 了解configure支持哪些参数?
    • ./configure --help
  # 第一类:制定输出文件位置, 一般制定前缀即可。
  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --modules-path=PATH                set modules path
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname
# 第二类:默认不会编译到nginx中的, 需要指定下面的参数, 才会编译到nginx模块中。
  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-http_v2_module              enable ngx_http_v2_module
  --with-http_realip_module          enable ngx_http_realip_module
  --with-http_addition_module        enable ngx_http_addition_module
  --with-http_xslt_module            enable ngx_http_xslt_module
  --with-http_xslt_module=dynamic    enable dynamic ngx_http_xslt_module
  --with-http_image_filter_module    enable ngx_http_image_filter_module
  --with-http_image_filter_module=dynamic
                                     enable dynamic ngx_http_image_filter_module
  --with-http_geoip_module           enable ngx_http_geoip_module
  --with-http_geoip_module=dynamic   enable dynamic ngx_http_geoip_module
  --with-http_sub_module             enable ngx_http_sub_module
  --with-http_dav_module             enable ngx_http_dav_module
  --with-http_flv_module             enable ngx_http_flv_module
  --with-http_mp4_module             enable ngx_http_mp4_module
  --with-http_gunzip_module          enable ngx_http_gunzip_module
  --with-http_gzip_static_module     enable ngx_http_gzip_static_module
  --with-http_auth_request_module    enable ngx_http_auth_request_module
  --with-http_random_index_module    enable ngx_http_random_index_module
  --with-http_secure_link_module     enable ngx_http_secure_link_module
  --with-http_degradation_module     enable ngx_http_degradation_module
  --with-http_slice_module           enable ngx_http_slice_module
  --with-http_stub_status_module     enable ngx_http_stub_status_module
# 第三类:默认会编译到nginx模块中的, 如果指定下面的参数, 则不会编译到nginx中。  
  --without-http_charset_module      disable ngx_http_charset_module
  --without-http_gzip_module         disable ngx_http_gzip_module
  --without-http_ssi_module          disable ngx_http_ssi_module
  --without-http_userid_module       disable ngx_http_userid_module
  --without-http_access_module       disable ngx_http_access_module
  --without-http_auth_basic_module   disable ngx_http_auth_basic_module
  --without-http_mirror_module       disable ngx_http_mirror_module
  --without-http_autoindex_module    disable ngx_http_autoindex_module
  --without-http_geo_module          disable ngx_http_geo_module
  --without-http_map_module          disable ngx_http_map_module
  --without-http_split_clients_module disable ngx_http_split_clients_module
  --without-http_referer_module      disable ngx_http_referer_module
  --without-http_rewrite_module      disable ngx_http_rewrite_module
  --without-http_proxy_module        disable ngx_http_proxy_module
  --without-http_fastcgi_module      disable ngx_http_fastcgi_module
  --without-http_uwsgi_module        disable ngx_http_uwsgi_module
  --without-http_scgi_module         disable ngx_http_scgi_module
  --without-http_grpc_module         disable ngx_http_grpc_module
  --without-http_memcached_module    disable ngx_http_memcached_module
  --without-http_limit_conn_module   disable ngx_http_limit_conn_module
  --without-http_limit_req_module    disable ngx_http_limit_req_module
  --without-http_empty_gif_module    disable ngx_http_empty_gif_module
  --without-http_browser_module      disable ngx_http_browser_module
  --without-http_upstream_hash_module
                                     disable ngx_http_upstream_hash_module
  --without-http_upstream_ip_hash_module
                                     disable ngx_http_upstream_ip_hash_module
  --without-http_upstream_least_conn_module
                                     disable ngx_http_upstream_least_conn_module
  --without-http_upstream_keepalive_module
                                     disable ngx_http_upstream_keepalive_module
  --without-http_upstream_zone_module
                                     disable ngx_http_upstream_zone_module
# 第四类:编译过程中一些优化参数: 例如输出debug日志等。
  --with-cc=PATH                     set C compiler pathname
  --with-cpp=PATH                    set C preprocessor pathname
  --with-cc-opt=OPTIONS              set additional C compiler options
  --with-ld-opt=OPTIONS              set additional linker options
  --with-cpu-opt=CPU                 build for the specified CPU, valid values:
                                     pentium, pentiumpro, pentium3, pentium4,
                                     athlon, opteron, sparc32, sparc64, ppc64

  --without-pcre                     disable PCRE library usage
  --with-pcre                        force PCRE library usage
  --with-pcre=DIR                    set path to PCRE library sources
  --with-pcre-opt=OPTIONS            set additional build options for PCRE
  --with-pcre-jit                    build PCRE with JIT compilation support

  --with-zlib=DIR                    set path to zlib library sources
  --with-zlib-opt=OPTIONS            set additional build options for zlib
  --with-zlib-asm=CPU                use zlib assembler sources optimized
                                     for the specified CPU, valid values:
                                     pentium, pentiumpro

  --with-libatomic                   force libatomic_ops library usage
  --with-libatomic=DIR               set path to libatomic_ops library sources

  --with-openssl=DIR                 set path to OpenSSL library sources
  --with-openssl-opt=OPTIONS         set additional build options for OpenSSL

  --with-debug                       enable debug logging
  • 执行编译:

    • ./configure --prefix=/Users/kj/Desktop/nginx
  • 了解编译后的文件

    • 编译完成后回多一个目录:objs
      XYSZW00468:objs kj$ tree
      .
      ├── autoconf.err
      ├── ngx_auto_config.h
      ├── ngx_auto_headers.h
      └── ngx_modules.c   # 这个文件存放着一会安装的时候需要安装哪些模块
      
    • 执行make编译
    • 执行make install 进行安装
    • 安装成功后, 在自己指定的路径下回多出很多文件, 包括: log等
  • mac 安装与启动nginx:

    • 安装: brew install nginx
    • 启动:brew services start/restart/stop nginx
    • 查看安装相关信息: brew info nginx
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

string_string数据类型概括

目录string数据类型创建字符串的三种方式检查字符串的方法常用的字符串方法字符串遍历切割字符串为数组​截取子串判断某个字符串是否出现在当前字符串中文本匹配-match、(es6)matchAll文本替换-replace、(es6)replaceAll(es6)获取某个位置的字符串有关ASCII码的方法获取某字符…

Good Bye 2022: 2023 is NEAR C Koxia and Number Theory

Problem - C - Codeforces 题意: 给定一个数列a,问你是否存在一个数 x 使得所有数加上x之后两两互质 思路: 一、 我们知道一个结论,一些数两两之间互质,就说明所有数之间的质因子都不重合 如果要我们去判断一堆数…

回顾与展望Zebec举办的“Web3.0 TechHive Summit 2022 大会”

随着流支付生态 Zebec 不断的实现商业进展,我们看到,其生态从Solana陆续的迁移到以BNB Chain为代表的EVM链上,并推出了以ZK-Rollup为主要技术手段的公链Zebec Chain,以在未来服务且满足于Web2、Web3世界的发展需求。 Zebec正在成…

若依框架:前端项目结构与初始页面渲染流程

目录 main.js入口文件 前端页面初始化 package.json配置文件 vue-cli:.env模式和环境变量配置 vue-cli三大核心构件 CLI 服务与npm scripts vue-cli-service命令与.env模式配置文件 .env模式和环境变量配置 vue.config.js:项目启动-自动打开默认…

pycharm如何设置python文件模板

pycharm如何设置python文件模板设置文件模板预定义变量设置自定义模板变量设置文件模板 打开设置界面 进入编辑器->文件和代码模板 此处我只写了文件头注释模板,也可以加一些默认代码,比如: python if __name__ "__main__":…

NC65在单据添加按钮跳转到固定单据,且进行数据初始化

实现功能 下面两个是按钮 下面红框里面的内容是上面单据带过来的 上面就是本地代码实现的功能 具体实现代码 提前约定 为了方便称呼,这里把第一张图称为上游单据,第二张图为下游单据 所有代码AggVo都要替换成你自己的 配置文件 上游单据拓展配置文…

2023年天津美术学院专升本专业课线上考试安排准备及设备操作说明

天津美术学院2023年高职升本招生专业考试考生须知及操作说明一、考试时间安排二、考前准备 (一)纸张及其他材料(二)考试设备及网络 1.考生须提前准备好至少两部智能手机,为确保网络考试顺利进行,建议考生使用最近3年上市的主流品牌手机(如iPh…

太强了!这么设计中间件完美解决了百万并发的问题!

V-xin:ruyuan0330 获得600页原创精品文章汇总PDF 目录 一、大部分人对Java并发仍停留在理论阶段二、中间件系统的内核机制:双缓冲机制三、百万并发的技术挑战四、内存数据写入的锁机制以及串行化问题五、片机制 分段加锁机制 六、缓冲区写满时的双缓冲…

c++ - 第19节 - c++11

1.C11简介 c11简介:在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。不过由于C03(TC1)主要是对C98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯…

Pycharm打开Project(工程)时停留在preparing workspace时间过长,导致打开很慢的解决方法...

Pycharm打开Project(工程)时停留在preparing workspace时间过长,导致打开很慢的解决方法… 昊虹君用Pycharm进行Python的开发,一直用得好好的,也没作过什么异常操作,但是从上星期开始,打开Project(工程)时停留在preparing worksp…

【王道操作系统】2.1.1 进程的定义、特征、组成、组织

进程的定义、特征、组成、组织 文章目录进程的定义、特征、组成、组织1.进程的定义2.进程的特征3.进程的组成4.进程的组织1.进程的定义 程序的概念: 进程的概念: 进程和程序的区别和联系: 区别: 进程是动态的,程序是静…

Linux系统下crond任务调度指令的常见用法

Linux系统下crond任务调度指令的常见用法 任务调度 任务调度是指系统在某个时间执行的特定的命令或程序。任务调度分类:1)系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等;2)个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。 基本语…

【攻防世界】网鼎杯2018 Web fakebook

学web总是能让我学到新的知识,很开心,很有趣,很好玩 打开题目 一个登录按钮,一个注册按钮,其余没有什么发现,对于web来说,常规先测试一下robots.txt文件 果然又发现,有一个bak文件…

opencv-python常用函数解析及参数介绍(二)——图像填充与图像融合

1.图像填充 函数及参数介绍 在opencv中使用cv2.copyMakeBorder可以进行图像的边界填充,需要的参数为(img, top_size, bottom_size, left_size, right_size, borderType),即(图片,上侧填充值,下侧填充值&a…

【数据结构与算法】KMP算法

文章目录前言一 .KMP的来历二.KMP解决的问题1.引入2.定义的引入1.字符串前缀2.字符串后缀3.最长相等前后缀3.核心思想三.next/prefix1.next的含义定义规律2.next的求取1.准备工作2.思路和图解4.应用前言 在C语言的strcmp的实现过程中,所涉及的算法较为简单&#xff…

Golang - 字符串操作汇总

Golang 字符串操作汇总1 string初始化2 遍历string3 byte & Rune3.1 初始化3.2 byte和rune区别1 string初始化 func newString() {//1. 字符串初始化// 方式一:使用简写声明,带有字符串的变量,支持特殊字符str : "one hello \n world"fmt…

三个月后,快手To B怎么样了?

未来,如何独立作战和走出快手的TOC“客户资源圈”,或将成为快手TOB新的十字路口。 作者|斗斗 编辑|皮爷 出品|产业家 人口红利终结,流量红利终结,超常规的高速增长终结。TOC模式的路越来越难走了。 快手与抖音作为短视频…

光耦特性以及计算

光耦特性 光耦器件电路图 这是我们常用的。光耦器件以及它的连接方式。 左侧R1是我们主要考虑的。 电流最小值是要让LED能够保持发光状态,最大值的话。1.不能让LED烧坏了。2. LED的负极端是单片机的。 这里主要是看引脚灌入电流的最大值。 电气规格 我们看看说…

手机数据包抓包详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是手机数据包抓包详解。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设…

并发编程——6.共享模型之不可变

目录6.共享模型之不可变6.1.日期转换的问题6.1.1.问题提出6.1.2.解决思路——同步锁6.1.3.解决思路——不可变6.2.不可变设计6.3.享元模式6.3.1.简介6.3.2.体现6.3.3.DIY6.4.final 原理6.5.无状态本文笔记整理来自黑马视频https://www.bilibili.com/video/BV16J411h7Rd/?p197&…