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配置高可用集群

概述

在这里插入图片描述

正向代理

系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理
在这里插入图片描述

反向代理

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

负载均衡

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

在这里插入图片描述

动静分离

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

下图是没有动静分离的做法
在这里插入图片描述

下图是动静分离的做法
在这里插入图片描述

Nginx的安装和启动

例子下载的是1.12.2版本,也可以根据自己实际项目的需求去选择版本
下载地址:http://nginx.org/en/download.html
在这里插入图片描述
安装nginx前要安装以下相关的依赖
在这里插入图片描述
第一步:安装编译工具和库文件(即安装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下
解压
在这里插入图片描述

进入安装包目录

[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

执行步骤三大概率出现的问题,及解决方案
在这里插入图片描述
解决方法

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

在这里插入图片描述
解决方法
打开nginx解压包下面的src/os/unix/ngx_user.c
在这里插入图片描述
在这里插入图片描述
解决方法:
在nginx解压包下的vim objs/Makefile 把 -Werrori删掉 (-Werror,它要求GCC将所有的警告当成错误进行处理)

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

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

Nginx常用命令

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

1查看nginx版本号命令
./nginx -v
在这里插入图片描述
2 启动nginx命令
./nginx
在这里插入图片描述
3关闭nginx命令
./nginx -s stop
在这里插入图片描述

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

./nginx -s reload

在这里插入图片描述

Nginx的配置文件

在这里插入图片描述
Nginx配置文件由三部分组成:

第一部分:全局块

从配置文件开始,到events之前的都属于全局块
在这里插入图片描述
详细说明:
在这里插入图片描述

第二部分:events块

在这里插入图片描述
在这里插入图片描述

第三部分:http块

在这里插入图片描述

http全局块

http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等
在这里插入图片描述

server块

在这里插入图片描述
Server块中又很多的注释,那些是可以参考的例子

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

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

测试访问的效果
在这里插入图片描述

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(里面内容略)。

在这里插入图片描述
配置完成后,防火墙应该开放相应的端口9001 8080 8081
然后重新加载nginx

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

Nginx正则配置

在这里插入图片描述
在这里插入图片描述

Nginx配置实例—负载均衡

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

Nginx配置—动静分离

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

Nginx配置高可用集群

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

在这里插入图片描述

  • 14
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个开源的容器化平台,用于轻松地打包、部署和运行应用程序。而Nginx是一个高性能的开源反向代理服务器,也是一个流行的Web服务器。 在使用Docker部署Nginx时,你需要以下几个步骤: 1. 首先,你需要安装Docker。你可以根据你的操作系统去官方网站下载并安装Docker。 2. 在安装完成后,你需要编写一个Dockerfile文件来定义Nginx容器的构建过程。一个简单的例子如下: ```dockerfile FROM nginx:latest COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 这个Dockerfile使用最新版本的Nginx作为基础镜像,然后将自定义的`nginx.conf`文件复制到容器中的`/etc/nginx/nginx.conf`路径下。接着,将容器的80端口暴露出来,并设置Nginx以非守护进程的方式运行。 3. 在同一目录下创建`nginx.conf`文件,并在其中进行Nginx的相关配置。例如,可以指定Nginx监听的端口、代理规则等。 4. 接下来,使用Docker命令来构建镜像。在终端中切换到Dockerfile所在的目录,并执行以下命令: ``` docker build -t my-nginx . ``` 这个命令会根据Dockerfile构建一个名为`my-nginx`的镜像。注意最后的`.`表示Dockerfile所在的路径。 5. 构建完成后,你可以使用以下命令来运行Nginx容器: ``` docker run -d -p 80:80 my-nginx ``` 这个命令会在后台运行一个名为`my-nginx`的容器,并将主机的80端口映射到容器的80端口。 现在,你已经成功地使用Docker部署了Nginx。你可以通过在浏览器中访问`http://localhost`来验证Nginx是否正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值