2022
我们一起努力

nginx静态服务器

目录:

  • 1、Nginx的功能与特性
  • 2、【NGINX入门】2.Nginx搭建静态资源web服务器
  • 3、Nginx高可用
  • 4、一、服务器从零到一——Ubuntu搭建nginx静态服务器

Nginx的功能与特性

Nginx在过去的10年里,作为Web服务器行业里的新生代迅速崛起。Nginx由俄罗斯工程师Igor Sysoev编写,2004年10月4日发布了第一个公众版本:1.0.1。Apache一直占据Web服务器行业的第一,但自2008年开始,它的市场份额在潜移默化的转移到Nginx身上。直至今日,据Netcraft的统计显示,全世界排名前100万的网站中有超过27%的网站在使用Nginx作为Web服务器。Nginx迅速在一向稳定的Web服务器行业崛起并站稳跟脚.

1 、静态HTTP服务器

Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。

2、反向代理服务器

客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

3、负载均衡

当网站访问量非常大,将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。Nginx可以通过反向代理来实现负载均衡,并能使用3种自带策略及2种第三方策略。

(1)RR(默认,每个请求按时间顺序逐一分配到不同的后端服务器)

(2)权重(指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况)

(3)ip-hash(以上配置会将请求轮询分配到应用服务器,也就是一个客户端的多次请求,有可能会由多台不同的服务器处理(若存在登录session时则需要重复登录)。ip-hash根据客户端ip地址的hash值将请求分配给固定的某一个服务器处理)

(4)fair(第三方 按后端服务器的响应时间来分配请求,响应时间短的优先分配)

(5)url_hash(第三方 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法)

4、虚拟主机

有的网站访问量大,需要负载均衡。有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。例如将和两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

1、IO多路复用epoll

2、轻量级

3、CPU亲和(affinity)

4、sendfile

【NGINX入门】2.Nginx搭建静态资源web服务器

本文讲解Nginx安装后,nginx搭建静态资源web服务器需要的配置内容包括location,gzip,带宽限速等配置。

添加上图中的配置后, 客户端访问 时, 会以树的格式展示mine_html中的所有文件. 使用这种方式可以很好的共享静态资源.

(1)Nginx系列教程(2)nginx搭建静态资源web服务器

Nginx高可用

一、Nginx概念

Nginx是一个高性能的http和反向代理服务器,特点是占用内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好

Nginx专为性能优化而开发,性能就是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数

二、Nginx配置文件

第一部分全局块

从配置文件开始到events之间的内容,主要会设置一些影响Nginx服务器整体运行的配置指令,比如worker_processes 1; worker_processes值越大,可以支持的并发处理量越多

第二部分events块

events块涉及的指令主要影响Nginx服务器与用户的网络连接,比如worker_connections 1024; 支持的最大连接数

第三部分http全局块

http全局配置的指令包括文件引入、mime-type定义,日志自定义,连接超时时间,单连接请求数上限,server块等

三、反向代理

1、正向代理

在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问

2、反向代理

我们只需要将请求发送到代理服务器,有反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址

配置方式

方式一

方式二指定location规则代理

四、负载均衡

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡

1、配置两台服务器负载

2、Nginx分配服务器策略

轮询(默认)

每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

weight

weight代表权重默认为1,权重越高被分配的客户端越多

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况

ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

五、动静分离

Nginx动静就是动态请求和静态请求分开,减轻动态服务器的压力

方式一

Nginx配置location规则处理静态请求,可以设置expires静态资源缓存时间

autoindex 列出文件目录

方式二

配置静态服务器和动态服务器分开请求

六、高可用

一台代理服务可能出现down机导致服务不可用,无法保证高可用

高可用架构配置多台服务器比如两台服务器一台正常使用一台用来备份,通过keepalived 心跳机制进行监控当主的服务器down掉立即启用备份服务器保证服务的高可用

安装keepalived 配置keepalived.conf 添加检测脚本 绑定网卡配置虚拟ip

七、Nginx原理

1、工作模式master和worker

2、一个master和多个workers的机制好处?

①可以使用nginx -s reload 热部署,利于nginx热部署操作

②每个worker是独立的进程,如果有其中一个worker出现问题,其他worker独立的继续进行争抢,实现请求过程,不会造成服务中断

需要设置多少个worker

nginx同redis类似都采用了io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是成千上万个请求也不再话下。每个worker的线程可以把一个cpu的性能发挥到极致

所以worker数和服务器的cpu数相等是最为适宜的。少了浪费cup,多了会造成cpu频繁切换上下文带来消耗

3、连接数worker_connection

①发送请求,占用了worker的几个连接数?

2个或者4个

②nginx有一个master,有四个worker,每个worker支持最大的连接数1024,支持最大的并发数是多少?

普通的静态访问最大并发数是:worker_connection * worker_processes / 2

如果是http做反向代理最大并发数是worker_connection * worker_processes / 4

一、服务器从零到一——Ubuntu搭建nginx静态服务器

Ubuntu 18.04上的Nginx默认启用了一个服务器模块,该模块被配置为在/var/www/html目录下提供文档。 虽然这适用于单个站点,但如果您托管多个站点,它可能会变得很笨重。 我们不必修改/var/www/html ,而是在/var/www为我们的 example.com 网站创建一个目录结构,并将/var/www/html保留为默认目录,如果客户端请求没有匹配任何其他网站。

按如下所示为example.com创建目录,使用-p标志创建任何必需的父目录:

$ sudo mkdir -p /var/www/ example.com/html

接下来,使用$USER环境变量分配目录的所有权:

USER:$USER /var/www/ example.com/html/

如果你没有修改你的umask值,你的web根目录的权限应该是正确的,但是你可以通过输入:

$ sudo chmod -R 755 /var/www/ example.com/

接下来,使用gedit或您最喜欢的编辑器创建一个index.html页面示例:

$ gedit /var/www/ example.com/html/index.html

在里面,添加下面的示例HTML:

html

head

titleWelcome to Example.com!/title

/head

body

h1Success! The example.com server block is working!/h1

/body

/html

为了让Nginx提供这些内容,有必要创建一个具有正确指令的服务器块。 我们不要直接修改默认配置文件,而是在/etc/nginx/sites-available/ example.com上创建一个新文件:

$ sudo gedit /etc/nginx/sites-available/example.com

粘贴到以下配置块中,该块类似于默认值,但已更新为我们的新目录和域名:

server {

listen 80;

listen [::]:80;

}

请注意,我们已将root配置更新到我们的新目录,并将server_name为我们的域名。

接下来,让我们通过创建一个链接到启动sites-enabled目录来启用该文件,该目录是Nginx在启动过程中读取的:

$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

现在启用两个服务器模块并将其配置为基于listen和server_name指令响应请求(您可以阅读关于Nginx如何处理这些指令的更多信息):

example.com :将响应 example.com 和 请求。

default :将响应端口80上与其他两个块不匹配的任何请求。

为了避免添加额外的服务器名称可能导致的哈希桶内存问题,有必要调整/etc/nginx/nginx.conf文件中的单个值。

打开文件:sudo gedit /etc/nginx/nginx.conf

找到server_names_hash_bucket_size指令并删除#符号以取消注释该行:

...

http {

...

server_names_hash_bucket_size 64;

...

}

...

接下来,测试以确保您的Nginx文件中没有语法错误:

$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

如果没有任何问题,请重新启动Nginx以启用您的更改:

$ sudo systemctl restart nginx

熟悉重要的Nginx文件和目录

nginx服务器配置文件:

/etc/nginx :Nginx配置目录。 所有的Nginx配置文件都驻留在这里。

/etc/nginx/nginx.conf :主要的Nginx配置文件。 这可以修改,以更改Nginx全局配置。

/etc/nginx/sites-available/ :可存储每个站点服务器块的目录。 除非将Nginx链接到sites-enabled了sites-enabled目录,否则Nginx不会使用此目录中的配置文件。 通常,所有服务器块配置都在此目录中完成,然后通过链接到其他目录启用。

/etc/nginx/sites-enabled/ :存储启用的每个站点服务器块的目录。 通常,这些是通过链接到sites-available目录中的配置文件创建的。

/etc/nginx/snippets :这个目录包含可以包含在Nginx配置其他地方的配置片段。 可重复配置的片段可以重构为片段。

nginx服务器日志文件:

/var/log/nginx/access.log :除非Nginx配置为其他方式,否则每个对您的Web服务器的请求都会记录在此日志文件中。

/var/log/nginx/error.log :任何Nginx错误都会记录在这个日志中。

赞(0)
文章名称:《nginx静态服务器》
文章链接:https://www.fzvps.com/248011.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!