Nginx详解

前言

今天有空分享一下Ngninx在实际开发过程中的一些只是,这篇《Nginx详解》带你掌握nginx知识。我写博客的目的是记录一下,将自己的知识分享给有需要的人。在这个世界上,唯一确定的就是不确定的人生。哪天自己不做程序员了,在互联网上留有自己的足迹,人活在世上总得留下点什么,证明自己曾经来过,是一件值得回忆和高兴的事。

目录

  • 1 Nginx的基本概念

(1) Nginx是什么,做什么事情
(2) 方向代理
(3) 负载均衡
(4) 动静分离

  • 2 Nginx安装、常用命令和配置文件
    (1) 在linux系统中安装Nginx
    (2) nginx常用命令
    (3) nginx配置文件
  • 3 nginx配置实例——反向代理
  • 4 nginx配置实例——负载均衡
  • 5 nginx配置实例——动静分离
  • 6 nginx配置高可用集群

概述

Nginx详解_第1张图片

正向代理

系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理
Nginx详解_第2张图片

反向代理

当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的是反向代理。
其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
Nginx详解_第3张图片

负载均衡

单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载均衡分发到不同的服务器,也就是我们所说的负载均衡。
比如共有15个请求,通过nginx将这些请求平均分发(理想状态下)到下面三个服务器上,每个服务器上又5个请求,这就是负载均衡。

Nginx详解_第4张图片

动静分离

原先一台服务器,动态资源(如:jsp,servlet)和静态资源(如:html,js)都在这台服务器上,导致服务器压力大。为了减小服务器压力,可以将动态和静态资源放到不同服务器上。

下图是没有动静分离的做法
Nginx详解_第5张图片

下图是动静分离的做法
Nginx详解_第6张图片

Nginx的安装和启动

例子下载的是1.12.2版本,也可以根据自己实际项目的需求去选择版本
下载地址:http://nginx.org/en/download.html
Nginx详解_第7张图片
安装nginx前要安装以下相关的依赖
Nginx详解_第8张图片
第一步:安装编译工具和库文件(即安装pcre所需要的依赖)

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

在这里插入图片描述
第二步:安装pcre
下载pcre
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
下载好的放到/usr/src下
解压
Nginx详解_第9张图片

进入安装包目录

[root@bogon src]# cd pcre-8.35

编译安装

[root@bogon pcre-8.37]# ./configure
[root@bogon pcre-8.37]# make && make install

这样就安装好了
查看pcre版本

[root@bogon pcre-8.35]# pcre-config --version

在这里插入图片描述
第三步:安装nginx
1 解压缩包到/usr/src
2 进入解压目录,执行./configure

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35

ps: --prefix=/usr/local/nginx表示指定安装的目录。也可以不指定目录,直接./configure,默认安装的路径就是/usr/local/nginx

3 Make && make install

执行步骤三大概率出现的问题,及解决方案
Nginx详解_第10张图片
解决方法

yum -y install gcc gcc-c++ autoconf automake make

Nginx详解_第11张图片
解决方法
打开nginx解压包下面的src/os/unix/ngx_user.c
Nginx详解_第12张图片
Nginx详解_第13张图片
解决方法:
在nginx解压包下的vim objs/Makefile 把 -Werrori删掉 (-Werror,它要求GCC将所有的警告当成错误进行处理)

解决完问题后,再make和make install即可

安装完成后可以查看nginx的版本
Nginx详解_第14张图片
安装完成后的启动脚本在sbin文件夹下
Nginx详解_第15张图片
启动./nginx。启动完成后可以查看到nginx的进程
在这里插入图片描述
在conf的nginx.conf文件中可以看到80,表示nginx默认访问的端口是80端口
Nginx详解_第16张图片
浏览器中访问服务的地址会出现nginx的欢迎界面
Nginx详解_第17张图片
如果服务器中80端口没有开放就要在防火墙中开放端口才能访问
Nginx详解_第18张图片
开放后可再次查,下面表示防火墙已经开放了
Nginx详解_第19张图片

Nginx常用命令

使用nginx操作命令前提条件:必须进入nginx的安装目录下的sbin目录(cd /usr/local/nginx/sbin)

1查看nginx版本号命令
./nginx -v
在这里插入图片描述
2 启动nginx命令
./nginx
Nginx详解_第20张图片
3关闭nginx命令
./nginx -s stop
Nginx详解_第21张图片

4 重新加载nginx
即修改了nginx的配置文件,默认不会马上生效,可以重启让它生效,但是现在我不想重启,让配置文件重新加载就会生效(即不要重启服务器也会生效)

./nginx -s reload

在这里插入图片描述

Nginx的配置文件

Nginx详解_第22张图片
Nginx配置文件由三部分组成:

第一部分:全局块

从配置文件开始,到events之前的都属于全局块
Nginx详解_第23张图片
详细说明:
Nginx详解_第24张图片

第二部分:events块

Nginx详解_第25张图片
Nginx详解_第26张图片

第三部分:http块

在这里插入图片描述

http全局块

http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等
Nginx详解_第27张图片

server块

Nginx详解_第28张图片
Server块中又很多的注释,那些是可以参考的例子

Nginx配置实例1——反向代理

准备工作
Nginx详解_第29张图片
流程图
Nginx详解_第30张图片
在nginx的配置中文件中配置vim /usr/local/nginx/conf/nginx.conf
Nginx详解_第31张图片
编写好后重新加载nginx
在这里插入图片描述
Window中C:\Windows\System32\drivers\etc本地域名解析
Nginx详解_第32张图片

测试访问的效果
Nginx详解_第33张图片

Nginx配置实例2——反向代理

实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中
Nginx监听端口为9001
访问http://127.0.0.1:9001/edu/ 直接跳转到127.0.0.1:8080
访问http://127.0.0.1:9001/vod/ 直接跳转到127.0.0.1:8081

准备工作
(2)中是在端口为8080的tomcat的webapps文件下下创建edu文件夹,文件夹下创建a.html(里面内容略)。8081的tomcat的webapps文件下下创建vod文件夹,文件夹下创建a.html(里面内容略)。

Nginx详解_第34张图片
配置完成后,防火墙应该开放相应的端口9001 8080 8081
然后重新加载nginx

访问结果
在这里插入图片描述
在这里插入图片描述

Nginx正则配置

Nginx详解_第35张图片
Nginx详解_第36张图片

Nginx配置实例—负载均衡

实现效果:
(1) 浏览器地址栏输入地址:http://服务器ip/edu/a.html,负载均衡效果,请求平均分担到8001,8002端口中。
Nginx详解_第37张图片
Nginx详解_第38张图片
Nginx详解_第39张图片
保存推出,重新加载。浏览器访问http://172.16.53.139/edu/a.html.就会轮询请求8001和8002
Nginx详解_第40张图片
Nginx提供了几种分配策略:
Nginx详解_第41张图片
Nginx详解_第42张图片
Iphash的方式:即第一次你访问地址,访问的是8080这台服务,只要你以后访问还是这个地址,就给指定你访问的还是8080这台服务器
Nginx详解_第43张图片

Nginx配置—动静分离

Nginx详解_第44张图片
动态请求:比如我数据要从数据库获取,这个可以理解为动态请求
Nginx详解_第45张图片
准备工作,cd / 然后mkdir data 再data文件夹下创建www(用于存放静态页面),image(存放图片的文件夹)
Nginx详解_第46张图片
修改nginx的配置文件,然后重新加载配置文件(root data访问的image或访问www的时候他会去访问data目录下的。。。)
Nginx详解_第47张图片
Nginx详解_第48张图片
访问就列出了image文件夹中的内容,因为上面配置autoindex on的作用
Nginx详解_第49张图片
访问图片正常
Nginx详解_第50张图片
从上面访问静态资源可以看到不是从请求tomcat,而是直接请求静态资源,实现了nginx静态访问

Nginx配置高可用集群

主从模式:
有一台住的nginx和从的nginx,当主nginx宕机了,就会自动切换到备份(从)nginx中。
通过备份nginx访问。
要实现这个效果要使用到keepalived软件。首先住服务ip绑定到虚拟的ip上,keepalived通过脚本检测到主服务器挂了,就会将从服务器绑定到ip中, keepalived作起到了路由的作用。
最终客户端访问都是通过虚拟ip进行访问的。
Nginx详解_第51张图片
在这里插入图片描述
(3)安装keepalived的yum命令(主备两台机器都要安装)
yum install keepalived -y
安装完后可以用命令查看是否安装成功
在这里插入图片描述
安装完成后,在etc里面生成目录keepalived,有文件keepalived.conf
/etc/keeplived
Nginx详解_第52张图片
(4)完成高可用配置(主从配置)
首先设置主服务器的内容,将keepalived.conf中的所有的内容替换成下面的内容
Nginx详解_第53张图片
Nginx详解_第54张图片
添加检测脚本;脚本中的内容。此脚本要存放的位置/usr/local/src/nginx_check.sh
Nginx详解_第55张图片
备机中的配置和主机中类型。keepalived.conf中的内容需要改,脚本内容不用改。
备机中网卡改成备机的网卡,state MASTER改成BACKUP
主从服务器都绑定好ip后可以通过ip a命令查看到绑定的ip
Nginx详解_第56张图片
主机和备机上的配置号好后,启动nginx和keepalived
Nginx详解_第57张图片
然后测试
把主服务器的nginx和keeplived停掉,通过虚拟ip惊醒访问也能访问,可以看到nginx的欢迎界面。所以即使主服务器停掉了,也能自动切换到从服务器中
在这里插入图片描述

Nginx详解_第58张图片

你可能感兴趣的:(nginx,java)