Nginx - ​一个高性能、灵活可靠的开源Web服务器

在这里插入图片描述

Nginx是什么?

  Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布。

  特点是占有内存少并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

  Nginx安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

  Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

为什么用Nginx

  项目刚上线时,用户量和并发量都很小。此时,一台应用服务器足够处理用户请求,服务器直接返回内容给用户。然而,随着用户数量的增加和并发量的上升,单台服务器无法满足需求。为了解决这个问题,采取了横向扩展的方式,增加了多台服务器。现在,多个项目运行在不同的服务器上。为了让用户访问这些服务器,引入了一个代理服务器。代理服务器的作用是接收用户的请求,并根据一定的规则将请求转发到不同的服务器节点上。这个过程对用户来说是无感知的,用户并不知道最终返回结果的服务器是哪一台。同时,希望代理服务器能够根据服务器的性能提供不同的权重选择,以保证最佳的用户体验。

Nginx的作用

  • HTTP代理和反向代理:Nginx常被用作Web服务器,其中最常见的功能是充当HTTP代理或反向代理。作为代理服务器,它可以接收客户端的请求并将其转发给后端服务器,然后将响应返回给客户端。这种方式可以隐藏后端服务器的真实IP地址,提供负载均衡缓存安全性等优势。
  • 负载均衡:Nginx提供负载均衡功能,可以将请求分发给多个后端服务器,以实现更好的性能和可靠性。它支持多种负载均衡策略,包括轮询加权轮询IP哈希等。
  • 动静分离:在动态网站中,有些资源是静态的(如CSS、HTML、图片等),不需要经过后端处理,而有些资源是动态生成的,需要后端服务器处理。Nginx可以根据规则将动态资源和静态资源分离,将静态资源进行缓存,以提高响应速度和减轻后端服务器的负载。
    在这里插入图片描述

4、Nginx服务搭建和使用

Nginx官网:https://nginx.org/

本次使用华为云服务器(ubuntu22) + docker搭建nginx服务

拉取nginx镜像

docker pull nginx:latest

启动nginx容器并且复制默认配置文件到宿主机

docker run -d <image-id>

# 将容器中的nginx配置文件复制到 /docker/nginx下
# 包括默认配置文件、html、conf.d
docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /docker/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /docker/nginx/html/

# 接下来删除刚才运行的容器

挂载nginx配置、html、日志文件的方式重新启动容器

# 默认使用80端口
# 指定时区为Asia/Shanghai,配置打印日志的时区
# 挂载nginx的日志,方便查看
docker run -d -p 80:80 --name nginx \
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/log:/var/log/nginx \
-v /docker/nginx/html:/usr/share/nginx/html \
-v /root/www:/www \
-e TZ=Asia/Shanghai \
container-id

容器启动成功实例

在这里插入图片描述

测试服务启动状态(成功启动)

在这里插入图片描述

5、nginx配置结构

  • 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • location块:配置请求的路由,以及各种页面的处理情况
...  #全局块

events {	#events块
		...	 
}

http 		#http块
{
  	upstream servername{  #负载均衡
       ...
     }
  
    ...
    server #server块
    { 
        ...
        location	#location块
        {
            ...
        }
     }
}

6、nginx配置实战

6.1 使用nginx代理静态文件

代理静态文件的nginx配置

# 代理静态文件的配置我们放到conf.d目录下,.conf后缀
# 我们启动服务的时候将宿主机的/root/www目录映射到容器的/www目录下
# 希望通过访问 http://host:port/static/filename 获取静态文件

server {
    listen 80;
    server_name 127.0.0.1;

    location /static {
        alias /www/;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }
}

代理效果展示

在宿主机的/root/www目录下放一个test.jpg文件以测试效果

在这里插入图片描述

6.2 代理web服务

应用正以5001端口正常启动

在这里插入图片描述

代理web服务5001端口的nginx配置

# 这里没有使用域名   flask项目运行在5001端口
server {
    listen       80 default_server;
    server_name  <私有IP>;

    access_log   /var/log/nginx/myflask.access.log combined;
    error_log    /var/log/nginx/myflask.error.log notice;

    #error_page   404   /404.html;
    #location = /404.html {
    #    root    /usr/share/nginx/html
    #}

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location / {
        proxy_pass http://<私有IP>:5001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # enable server push for resources
        http2_push_preload on;
    }
}

代理效果展示

在这里插入图片描述

7、总结

  Nginx 是一个功能强大、高性能的服务器软件,适用于各种规模的网络应用和服务,可以提供高效、可靠的服务支持。具体用法和配置我们可以参考官网的文档和资源,利用其强大的功能构建高性能、可靠的网络应用和服务。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实战Nginx:取代Apache的高性能Web服务器 作者: 张宴 出版社: 电子工业出版社 出版年: 2010年2月 内容简介   Nginx (“engine x”) 是俄罗斯人Igor Sysoev编写的一款高性能HTTP 和反向代理服务器Nginx选择了epoll和kqueue作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,它能够支持高达50 000个并发连接数的响应,运行稳定,且内存、CPU等系统资源消耗非常低。   本书主要分为4个部分,第1部分为基础篇,介绍了Nginx服务器的安装与配置方法;第2部分为进阶篇,重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache网页缓存系统;第3部分为实战篇,分析了Nginx在国内知名网站(如新浪播客、搜狐博客等)中的应用案例;第4部分为模块篇,对Nginx的基本模块和第三方模块进行了集中介绍。   本书是为对配置管理Nginx服务器感兴趣的读者准备的,适用于以前没有接触过Nginx,或者对Nginx有一些了解并希望能够进一步深入学习的专业系统工程师、个人网站站长及Linux/Unix从业人员。   作者简介   张宴,就职于北京金山软件公司,金山游戏官方网站──逍遥网(xoyo.com)系统架构师,技术支持部平台组组长。曾在新浪网、赶集网等公司任系统工程师、系统架构师,工作内容主要涉及:服务器系统架构设计与部署、系统运维与调优、网络故障解决、网站后端以及接口类PHP程序开发、Unix开源软件二次开发、服务器监控系统开发、系统运维与平台研发团队管理。 第1章 Nginx简介.pdf 第2章 Nginx服务器的安装与配置.pdf 第3章 Nginx的基本配置与优化.pdf 第4章 Nginx与PHP(FastCGI)的安装、配置与优化.pdf 第5章 Nginx与JSP、ASP.NET、Perl的安装与配置.pdf 第6章 Nginx HTTP负载均衡和反向代理的配置与优化.pdf 第7章 Nginx的Rewrite规则与实例.pdf 第8章 Nginx模块开发.pdf 第9章 NginxWeb缓存服务与新浪网的开源NCACHE模块.pdf 第10章 Nginx在国内知名网站中的应用案例.pdf 第11章 Nginx的非典型应用实例.pdf 第12章 Nginx的核心模块.pdf 第13章 Nginx的标准HTTP模块.pdf 第14章 Nginx的其他HTTP模块.pdf 第15章 Nginx的邮件模块.pdf
nginx是一款开源高性能web服务器,具有高并发、低内存消耗、稳定可靠的特点,被广泛用于构建高性能的网站和应用。 使用nginx作为web服务器,可以通过一些实战技巧来进一步优化性能。首先,可以通过调整nginx的配置文件来提高并发处理能力。可以将worker_processes参数设置为CPU核心数,以充分利用服务器的CPU资源;同时,可以通过调整worker_connections参数来增加nginx能够同时处理的连接数,提高系统的并发处理能力。 其次,可以配置nginx的反向代理功能来分发请求,并将负载均衡在多个应用服务器之间。这样可以提高系统的响应速度和可靠性,避免单个服务器负载过高导致系统崩溃。同时,可以使用nginx的缓存功能来减少对后端服务器的请求,提高系统的访问速度。 另外,使用nginx还可以进行静态资源的加速。通过配置nginx的gzip压缩和缓存功能,可以减小静态资源的传输大小并提高访问速度。此外,还可以使用nginx的文件缓存功能,将常用的静态资源缓存在内存中,减少磁盘IO操作,进一步提高性能。 除了以上实战技巧,还可以通过优化应用程序的代码和数据库的设计来进一步提高性能。减少不必要的数据库查询,使用有效的缓存机制,使用适当的索引来优化数据库查询等等,都可以提升系统的性能。 综上所述,nginx高性能web服务器的实战教程涉及到许多方面的内容,包括配置优化、负载均衡、缓存加速等。通过深入学习和实践这些技巧,可以构建出性能卓越的网站和应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楼下安同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值