nginx基本概念和安装

一. 简介

        1.1 是什么

  • nginx是一个高性能的HTTP和反向代理web服务器,是一款轻量级的Web服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行,特点是占有内存少,并发能力强。
  • ngnix专为性能优化而开发,能够支持高达50000个并发连接数的响应。ngnix选择了epoll and kqueue作为开发模型。

        2.2 能实现哪些功能

        nginx具有丰富的配置功能,以满足不同的需求。

  • 虚拟主机:nginx可以配置多个虚拟主机,使得一个服务器可以托管多个网站或应用程序。

  • 反向代理:可以将客户端请求转发到后端服务器,实现负载均衡和高可用性。

  • 缓存:支持HTTP缓存,可以缓存静态文件,减轻后端服务器的负载,提高访问速度

  • SSL/TLS支持:可以配置HTTPS协议,保证数据传输的安全性。

  • URL重写:可以通过配置重写规则,实现URL的重定向和转发。

  • Gzip压缩:支持对响应内容进行压缩,减小传输数据的大小,提高加载速度。

  • 访问限制:可以配置IP白名单、黑名单或使用HTTP Basic Authentication对访问进行限制。

  • 日志记录:支持将请求和错误信息记录到日志文件中,方便排查问题和进行统计分析。

  • 缓存控制:可以配置缓存策略,设置缓存时间、缓存大小等参数。

  • 动态模块支持:nginx可以通过动态模块进行功能扩展,例如Lua脚本、HTTP/2支持等。

        这些只是nginx配置功能的一部分,还有很多其它的配置选项可以根据具体需求进行配置。

        2.3 特性

  • nginx具有很高的稳定性。其它HTTP服务器,当遇到访问峰值,或者有人恶意发起慢速连接时,很可能会导致服务器物理内存的消耗频繁交换,失去响应,只能重启服务器。而ngnix采取了分阶段资源分配技术,使得它的CPU和内存占用率很低。ngnix官方表示保持10000个内有活动的连接,nginx只占用2.5M内存。
  • ngnix支持热部署。它的启动非常容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动,还可以在不间断服务的情况下,对软件版本进行升级。
  • ngnix采用master-slave模型。能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O阻塞延迟,当采用select/poll调用时,还可以限制每个进程的连接数。

二. 概念

        2.1 正向代理

        如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

        客户端要求正向代理服务器向目的服务器要某种资源。客户端需要配置代理服务器,通过代理服务器进行互联网访问。

        2.2 反向代理

        其实客户端对代理服务器是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再放回给客户端,此时方向代理服务器和目标服务器对外就是一个服务器。暴露的是代理服务器的地址,隐藏了真实服务器IP地址。

        2.3 负载均衡

        在早期的单一系统使用的架构为客户端发送多个请求给服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将处理结果返回给客户端,这种架构适用于并发量比较少的情况。当并发量比较大时,可能会造成服务器崩溃。

        我们首先可能想到的是升级服务器配置。比如提高CPU执行频率,加大内存等。但是我们知道摩尔定律的日益失效,硬件性能提升已经不能满足日益提升的需求。

        这个时候集群的概念就产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上。将原先请求集中到单个服务器的情况改为将请求分发到多个服务器上,即将负载分发到不同服务器上,这就是负载均衡。

        2.4 动静分离

        为了加快网站的解析速度,可以把动态网页和静态网页由不同服务器来解析,加快解析速度,降低原来单个服务器的压力。

         三. 安装

        在安装ngnix之前需要安装一些相关依赖。

  • 安装gcc

        gcc是linux下的编译器,用来编译ngnix。

yum -y install gcc

        查看gcc版本:

gcc -v

  • 安装pcre,pcre-devel

        pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。

yum install -y pcre pcre-devel
  • 安装zlib

        zlib库提供了很多压缩和解压缩方式,ngnix使用zlib对http包的内容进行解压缩。

yum install -y zlib zlib-devel
  • 安装openssl

        openssl是进行信息加解密的,是web安全通信的基石。

yum install -y openssl openssl-devel
  • 下载ngnix安装包

        进入ngnix官网下载最新稳定版本:nginx: download 

        下载到安装包后,进行解压。

        在linux系统中,进入到解压后的ngnix目录,执行下面命令:

#检测你的安装平台的目标特征。比如检测你的编译器等
./configure

#编译ngnix
make

#安装ngnix
make install
  •  运行ngnix

进入到ngnix编译后的文件目录:

cd /usr/local/nginx/sbin

#运行ngnix
./ngnix
  •  查看是否运行成功

使用命令:

netstat -nltp

         可以看到ngnix默认监听在80端口。

         在浏览器访问服务器上的ngnix:服务器公网ip:ngnix端口

        如果访问不到,可能是防火墙的问题

方案一:直接关闭防火墙

service firewalld status #查看状态
service firewalld stop #关闭

 方案二:配置防火墙80端口可以访问

#查看防火墙信息: 
firewall-cmd --list-all
#添加端口号: 
sudo firewall-cmd --add-port=80/tcp --permanent
#重启防火墙: 
firewall-cmd --reload
#再查看防火墙信息:
firewall-cmd --list-all
  • 常用命令

        前提需要进入到ngnix目录:/usr/local/ngnix/sbin

#查看ngnix版本号
./ngnix -v

#运行ngnix
./ngnix

#关闭ngnix
./ngnix -s stop

#重新加载ngnix
./ngnix -s reload

        四. ngnix配置文件

        配置文件及位置:

/usr/local/ngnix/conf/ngnix.conf

        4.1 组成部分

        ngnix配置文件有三部分组成:

  • 第一部分:全局块

        从配置文件开始到events之间的内容,主要会设置一些影响ngnix服务器整体运行的配置指令

如:

worker_processes  1;

这是nginx服务器并发处理服务的关键配置,值越大,可以支持的并发处理量也就越多,但是会受到硬件、软件等设备的制约
  • 第二部分:events块

        主要影响ngnix服务器与用户的网络连接。

如:

表示ngnix的最大连接数
events {
    worker_connections  1024;
}
  •  第三部分:http块,配置最频繁的部分,代理,缓存和日志定义等绝大多数功能和第三方配置都在这里, http块也分为http全局块和server块。

        http全局块是http里面到server里的内容。包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限等。

        server块和虚拟主机有关。虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网硬件成本。

        每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。

        而每个server块也分为全局server块和多个location块。

                1. 全局server块:最常见的配置是本虚拟机主机的监听配置和本虚拟机主机的名称或IP配置。

                 2. location块:一个server可以配置多个location块。主要作用是基于ngnix服务器接收到的请求字符串(例如:server_name/uri-string),对虚拟主机的名称(也可以是ip别名)之外的字符串(例如:前面的/url-string)进行匹配,对待定的请求进行处理,地址定向,数据缓存和应答控制的功能,还有许多第三方模块的配置也在这里进行。

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            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;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【TES807】 基于XCKU115 FPGA的双FMC接口万兆光纤传输信号处理平台

板卡概述 TES807是一款基于千兆或者万兆以太网传输的双FMC接口信号处理平台。该平台采用XILINX的Kintex UltraSacle系列FPGA:XCKU115-2FLVF1924I作为主处理器,FPGA外挂两组72位DDR4 SDRAM,用来实现超大容量数据缓存,DDR4的最高数据…

【软件测试】编写测试用例篇

前面部分主要是编写测试用例的方法和方向,后面一部分是编写出具体的测试用例 目录 什么是测试用例 1.设计测试用例的万能公式 1.1.从思维出发 1.2.万能公式 1.3.弱网测试 1.4.安装与卸载测试 2.设计测试用例的方法 2.1.基于需求的设计方法 2.2.等价类 2.3…

【Git分支管理】分支合并冲突及其解决

目录 0.合并冲突 1.创建和切换dev1 ​2.dev1 bbb on dev branch ​3.master ccc on dev branch 4.dev1和master合并冲突 5.合并冲突解决 ​6.git log查看合并流程图 先提交再合并 0.合并冲突 在使用git进行合并操作的时候,在合并两个分支的时候就有可能出…

【EXCELL技巧篇】使用Excel公式,获取当前 Excel的Sheet页的名字

【通知】: 正式跟大家说个难过的消息,本来在「中国朝代史」结束后,开启的下一个专栏「中国近代史」前面几期做的还好好的,可是今天起正式通知审核不过,因为一些原因。 其实我对于历史这一块我还是很感兴趣的&#xff0…

13、Shell自动化运维编程基础

弋.目录 RHCE板块一、为什么学习和使用Shell编程二、Shell是什么1、shell起源2、查看当前系统支持的shell3、查看当前系统默认shell4、Shell 概念 三、Shell 程序设计语言1、Shell 也是一种脚本语言2、用途 四、如何学好shell1、熟练掌握shell编程基础知识2、建议 五、Shell脚本…

海外媒体投稿:精准定位目标受众!掌握这5个软文代发推广要点

在当今互联网时代,软文代发成为了一种常见的推广手段。要想取得成功,就需要掌握精准定位目标受众这一关键要素。本文将介绍5个软文代发推广要点,帮助读者了解如何更好地利用软文代发来吸引目标受众。 软文代发要点 1. 熟悉目标受众 在进行软…

怎麼使用指紋流覽器Hubstudio促進跨境電商業務?

指紋流覽器是一種基於流覽器指紋技術開發的工具,能夠模擬不同的流覽器環境和指紋資訊,實現多個帳號的同時登錄和管理。此項技術提升了帳號的安全性,同時顯著降低了帳號被封禁的風險。指紋流覽器通常用於隱私保護、安全性增強、多帳號管理、數…

房地产市场2024年展望——深度解读行业趋势

作为一名有十多年经验的地产营销人,对于2024年房地产行业的发展趋势,我认为可以从以下几个方面来探讨,如果觉得对你有帮助,请不吝一个三连(赞同喜欢收藏) 一、市场调整与分化加剧 在经历了较长时间的市场…

Python excel知识库批量模糊匹配的3种方法实例(fuzzywuzzy\Gensim)

前言 当然,基于排序的模糊匹配(类似于Excel的VLOOKUP函数的模糊匹配模式)也属于模糊匹配的范畴,但那种过于简单,不是本文讨论的范畴。 本文主要讨论的是以公司名称或地址为主的字符串的模糊匹配。 使用编辑距离算法进…

ATFX集团高层受到中国驻约旦大使馆经商处接见

全球领先的差价合约经纪商ATFX宣布,在全球扩张、深耕区域市场与本地化运营的战略指导下,公司深耕区域市场方面取得显著进展,在中东市场,其高层更是获得了中国驻约旦大使馆经商处的特别接见。近日,在中国驻约旦哈希姆王…

【计算机网络】学习指南及导论

个人主页:【😊个人主页】 系列专栏:【❤️计算机网络】 文章目录 前言我们为什么要学计算机网络?计算机网络概述计算机网络的分类按交换技术分类按使用者分类按传输介质分类按覆盖网络分类按覆盖网络分类 局域网的连接方式有线连接…

更新:彩虹云商城系统 自助下单免授权无后门源码(修复完整版)

源码简介: 最新更新彩虹云商城系统,自助下单免授权无后门源码(修复完整版) 自助下单彩虹云商城系统。这玩意儿不简单,它是高效稳定的电商平台!免授权源码版本,灵活方便。源码是用PHP语言写的。…

十五、C++11常用新特性—Lambda表达式

1.基本 这个好像是很好用的,其有以下有点: 声明式的编程风格:直接匿名定义目标函数或函数对象,不需要额外写一个命名函数或函数对象。简洁:避免了代码膨胀和功能分散,让开发更加高效。在需要的时间和地点…

Java实现经纬度坐标转换---CGCS2000坐标、gps84 、GCJ-02、 BD-09

Java实现经纬度坐标转换 目录 一、坐标系统简介1.经纬度坐标系2.坐标系统3.坐标转换简介 二、地图经纬度转换工具类(CGCS2000坐标 与 WGS84坐标 互转)1.对于 CGCS2000 需要引入 proj4j依赖:2.坐标转换工具类 三、地图经纬度转换工具类(gps84 …

【Linux】多线程_7

文章目录 九、多线程8. POSIX信号量根据信号量环形队列的生产者消费者模型代码结果演示 未完待续 九、多线程 8. POSIX信号量 POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步。 创建…

38 IRF+链路聚合+ACL+NAT组网架构

38 IRF链路聚合ACLNAT组网架构 参考文献 34 IRF的实例-CSDN博客 35 解决单条链路故障问题-华三链路聚合-CSDN博客 36 最经典的ACL控制-CSDN博客 37 公私网转换技术-NAT基础-CSDN博客 32 华三vlan案例STP-CSDN博客 一 网络架构 二 采用的技术 1 vlan 2 ip 3 stp 4 链…

【问题记录】Docker配置mongodb副本集实现数据流实时获取

配置mongodb副本集实现数据流实时获取 前言操作步骤1. docker拉取mongodb镜像2. 连接mongo1镜像的mongosh3. 在mongosh中初始化副本集 注意点 前言 由于想用nodejs实现实时获取Mongodb数据流,但是报错显示需要有副本集的mongodb才能实现实时获取信息流,…

数据结构(Java):队列Queue集合力扣面试OJ题

1、队列 1.1 队列的概念 队列是一个特殊的线性表,只允许在一端(队尾)进行插入数据操作,在另一端(对头)进行删除数据。队列具有先进先出FIFO(First In First Out)的特性。 入队:数据只能从队尾…

【密码学】密码学数学基础:群的定义

一、群的定义 在密码学中,群(Group)的概念是从抽象代数借用来的,它是一种数学结构,通常用于描述具有特定性质的运算集合。 群的定义 群定义中的几个关键要素: 集合:首先,群是由一系…

ES快速开发,ElasticsearchRestTemplate基本使用以及ELK快速部署

最近博主有一些elasticsearch的工作,所以更新的慢了些,现在就教大家快速入门,并对一些基本的查询、更新需求做一下示例,废话不多说开始: 1. ES快速上手 es下载:[https://elasticsearch.cn/download/]()这…