Nginx简介

Nginx简介

1、nginx概述

充当http服务器、反向代理服务器、虚拟主机。

Nginx特点:

1、跨平台,支持linux和window

2、内存消耗小、成本低廉

3、稳定性高:用于反向代理,宕机的概率微乎其微

使用nginx大大提高了我们网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼,

2、反向代理

(1)正向代理

客户端知道服务器端,通过代理端连接服务器端。代理端代理的是服务器端。

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

所谓反向,是对正向而言的。服务器端知道客户端,客户端不知道服务器端,通过代理端连接服务器端。代理端代理的是客户端。代理对象刚好相反,所以叫反向代理。

3、负载均衡

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

4、动静分离

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

Nginx安装

1、linux环境

pcre、openss、zlib、nginx

如果连接不上,需要检查下是否开放端口,或者服务器防火墙是否开放端口!

开启
service firewalld start

重启
service firewalld restart

关闭
service firewalld stop

查看开放的端口号
firewall-cmd --list-all

查询端口是否开放
firewall-cmd --query-port=8080/tcp

设置开放的端口号
firewall-cmd --add-service=http -permanent
sudo firewall-cmd --add-port=80/tcp --permanent

移除端口
firewall-cmd --permanent --remove-port=8080/tcp

重启防火墙
firewall-cmd -reload

2、window环境

1、将nginx下载压缩

2、启动nginx

(1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过

(2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可

3、检查

(1)直接在浏览器地址栏输入网址 http://localhost:80,回车,出现以下页面说明启动成功

image.png

(2)也可以在cmd命令窗口输入命令 tasklist /fi "imagename eq nginx.exe" ,出现如下结果说明启动成功

image.png

nginx默认的端口是80,如果80端口被占用,可以在其conf路径下的nginx.conf配置文件中进行修改

image.png

检查80端口是否被占用的命令是: netstat -ano | findstr 0.0.0.0:80 或 netstat -ano | findstr "80"

当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效

Nginx操作的常用和配置文件

nginx常用命令

1、查询nginx版本号

linux:./nginx -v
win:nginx -v

2、启动nginx

linux:./nginx
win:start nginx

3、关闭nginx

linux:./nginx -s stop
win:nginx -s stop

4、重新加载nginx配置

linux:./nginx -s reload
win:nginx -s reload

5、安全退出

./nginx -s quit

6、查看nginx进程

ps aux|grep nginx 

nginx配置文件

打开nginx.conf我们可以很明显的将nginx.conf配置文件分为三部分

第一部分:全局块

主要是设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户(组)、允许生成的worker process数,进程pid存放路径,日志存放路径和类型以及配置文件的引入等。

worker_processes  1;
这个是nginx服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约

第二部分:events块

events块主要影响nginx服务器与用户的网络链接,常用的设置包括是否开启对多个work process下的网络链接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个word process 可以同时支持的最大连接数等。

这部分的配置对nginx的性能影响大,在实际中应该灵活配置

events {
    worker_connections  1024;
}
表示每个work process 支持的最大连接数为1024

第三部分:http块

这算是nginx服务器配置中最频繁的部分,代理、缓存和日志定义等多数功能和第三方模块的配置都在这里,需要注意的是http块包含了http全局块和server块。

1、http全局块:

http全局配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。

2、service块:

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

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

而server块也分为全局server块,以及可以同时包含多个location块。

1、全局server块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置

2、location块

一个server可以配置多个location块

这块主要作用是基于nginx服务器接收到的请求字符串,对虚拟主机名称之外的字符串进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

Niginx之反向代理

1、首先准备一个项目,分别运行在两个不一样的端口号(打包成jar 运行)

image.png

1、反向代理实例一

使用nginx反向代码,代理这个端口

nginx监听端口为9001

访问http://localhost:9001/ 直接跳转到127.0.0.1:8081

配置nginx.conf文件

 server {
        listen       9001;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://127.0.0.1:8081/;
        }
    }
image.png

2、反向代理实例二

使用nginx反向代理,根据访问的路径跳转到不同端口的服务中

nginx监听端口为9002

访问http://127.0.0.1:9002/edu/ 直接跳转到127.0.0.1:8081

访问http://127.0.0.1:9002/vod/ 直接跳转到127.0.0.1:8082

server {
        listen       9002;
        server_name  localhost;

        location ~ /edu/ {
            proxy_pass http://127.0.0.1:8081;
        }
        location ~ /vod/ {
            proxy_pass http://127.0.0.1:8082;
        }
    }
image.png

location指令说明:

该指令用于匹配URL

  • =:用于不含正则表达式的url,要求请求字符串与url严格匹配,如果匹配成功就继续向下搜索并立即处理该请求。
  • ~:用于表示url包含正则表达式,并且区分大小写
  • ~*:用于表示url包含正则表达式,并且不区分大小写
  • ^~:用于不含正则表达式的url前,要求nginx服务器找到标识url和请求字符串匹配度高的location后,立即使用此location处理请求,而不再使用location块中的正则url和请求字符串做匹配。

注意:如果url包含正则表达式,则必须要有或者*标识。

Nginx负载均衡

niginx将原先请求集中到单个服务器上改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡

image.png

实例

监听端口为8052

访问http://localhost:8052 可以随机访问到127.0.0.1:8081或127.0.0.1:8082

对nginx.conf进行配置:

#负载均衡配置的规则
upstream ch{
        server 127.0.0.1:8081 weight=1;
        server 127.0.0.1:8082 weight=1;
    }
server {
    listen       8052;
    server_name  localhost;
    location / {
        root   html;
        proxy_pass http://ch;   #这边的ch要与上面的配置规则的ch一致才行
        index  index.html index.htm;    
    }
}

#重启配置之后,返回http://localhost:8052/可以看到 分别调用了一次8081和8082,跟后面weight权重有关,权重越大,访问的频率越高

nginx分配策略

负载均衡就是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。在linux下有nginx、LVS、Haproxy等等服务可以提供负载均衡服务,而且nginx提供了几种分配方式(策略):

1、轮询(默认)

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

2、weight

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

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

3、ip_hash

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

upstream server_pool{
ip_hash;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配

upstream server_pool{
server 127.0.0.1:8081;
server 127.0.0.1:8082;
fair;
}

Nginx动态分离

nginx动静分离简单来说就是把动态和静态请求分开,不能单理解成动态页面和静态页面分开。动静分离可以理解成nginx处理静态页面,tomcat处理动态页面,动静分离分为两种:

1、把静态文件独立成单独的域名,放在独立的服务器上,主流的方案

2、把静态和动态文件混合一起发布,通过nginx来分开(使用location指定不同的后缀名实现不同的请求转发)

Expires参数:给一个资源设定一个过期的时间,就是无需去服务端验证,直接通过浏览器自身确认是否过期即可,不会产生额外的流量,此种适合不经常变动的资源(如果经常更新的文件,不建议使用expires缓存)

image.png

Nginx原理

nginx高可用主备模式

原理

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • [TOC] 简介 nginx [engine x] is an HTTP and reverse proxy se...
    Whyn阅读 657评论 0 1
  • 简介: Nginx是一款自由、开源、高性能的HTTP服务器和反向代理服务器,可以当做(邮件代理)IMAP,POP3...
    hlchengzi阅读 1,914评论 0 1
  • 一、Nginx的产生 Nginx是一款高性能的 HTTP 和反向代理服务器,由俄罗斯人Igor Sysoev(伊戈...
    striveSmile阅读 1,151评论 0 47
  • 【简介】Nginx是一款轻量级的文本反向代理服务器及电子邮件代理服务器,其特点是内存少,并发高。【工作原理】Ngi...
    先生_吕阅读 1,885评论 1 1
  • 一、nginx简介 1.什么是nginx? 一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMT...
    wustmz阅读 7,571评论 0 70