Nginx入门

Nginx的安装与介绍

Nginx简介

​Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

​因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

Nginx作用
  • Nginx是一款轻量级的web 服务器,可以处理静态资源(前后端分离)
  • Nginx是反向代理服务器,实现负载均衡
  • Nginx也是电子邮件(IMAP/POP3)代理服务器,能够代理收发电子邮件
Nginx和Tomcat的区别
  • 设计目的:

    • Tomcat是一个免费的开源的Servlet容器,实现了JAVAEE规范,遵循http协议的的服务器
      • 部署web项目,运行Servlet、JSP代码的
      • 也能部署静态资源
      • 为了解析处理Servlet而设计的
    • Nginx是一款轻量级的电子邮件(电子邮件遵循IMAP/POP3协议)代理服务器,后来又发展成可以部署静态应用程序和进行反向代理的服务器
      • 为了部署静态资源的。更重要的目的是:反向代理
  • 存放内容:

    • tomcat可以存放静态和动态资源

    • nginx可以存放静态资源

  • 应用场景

    • tomcat用来开发和测试javaweb应用程序

    • nginx用来做负载均衡服务器, 发布静态网页

Nginx安装与使用

下载Nginx

注意:开发人员/企业,不应该追求最新,应该追求稳定。各种软件和技术,都要求稳定

在这里插入图片描述

安装Nginx
  • Nginx的Windows版免安装,解压可直接使用。
    • 注意:解压目录里不要有中文、空格、特殊字符
  • 解压后目录结构如下:

在这里插入图片描述

nginx-1.16.1
	|--conf			配置文件,其中有一个nginx.conf是核心配置文件
	|--contrib		nginx提供的一些脚本工具等
	|--docs			文档说明
	|--html			nginx的默认部署的静态资源,其中有欢迎页面和错误页面
	|--logs			日志
	|--temp			临时文件夹
	|--nginx.exe	nginx程序 ★
Nginx的基本操作
操作命令
  1. 打开cmd,切换到nginx的解压目录
  2. 输入命令,操作nginx:
    • 启动Nginx:start nginx.exe
    • 重新载入配置文件:nginx.exe -s reload
      • 如果修改了配置文件,不需要重启,只要重新载入即可
    • 停止Nginx:nginx.exe -s stop
演示效果
  1. 启动nginx

在这里插入图片描述

  • 启动成功后,在任务管理器中会有两个nginx的进程

在这里插入图片描述

  1. 使用浏览器访问nginx

    • nginx的默认端口是80,所以访问地址是:http://localhost:80

    在这里插入图片描述

  2. 如果修改了配置文件,就重新载入

在这里插入图片描述

  1. 停止nginx

在这里插入图片描述

小结
  • 安装与配置
    • 免安装,直接解压即可。注意:解压的目录里不要有中文、空格、特殊字符
    • 需要关注的有两个:
      • nginx.exe:nginx软件的程序
      • conf/nginx.conf:配置文件
  • nginx的基本操作
    • 通过cmd命令操作:打开cmd,切换到nginx文件夹里:cd /d nginx的文件夹路径
    • 启动nginx:start nginx.exe
    • 重启nginx:nginx.exe -s reload
    • 关闭nginx:nginx.exe -s stop

Nginx的使用

  • 使用Nginx部署静态web应用
  1. 准备一个静态web应用
  2. 修改nginx的配置文件
  3. 启动nginx,使用浏览器访问
准备一个静态web应用
  • 有静态项目如下:(任意静态项目均可),放到没有中文、空格、特殊字符的目录里

在这里插入图片描述

修改nginx的配置文件
  • 打开conf\nginx.conf配置文件,修改httpserver的内容
    • 配置文件中#开头的是注释
......
http {
 	......

    server {
        listen       80;
        server_name  localhost;

		#======配置开始======
        location / {
            root   E:\\travel;            # 配置静态项目的路径,注意:要双反斜杠转义
            index  index.html;  # 设置默认的欢迎页面
        }
        #======配置结束======
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
启动nginx,使用浏览器访问
  • 打开cmd,切换到nginx目录里,启动nginx:start nginx.exe
  • 使用浏览器访问:http://localhost:80

在这里插入图片描述

小结
  • 准备一个静态项目(不要放在有中文、空格、特殊字符的目录里)
  • 修改nginx的配置文件nginx.conf
 server {
        listen       80;
        server_name  localhost;

        location / {
            # root:要配置静态项目的路径,注意反斜杠,以英文的分号结尾
            root   E:\\99\\travel;
            # index:配置默认的欢迎页面,以英文分号结尾
            index  index.html;
        }

......

Nginx虚拟主机

  • Nginx可以配置多个虚拟主机,每个虚拟主机里部署不同的web项目
  • 我们可以
    • 方案一:给每个虚拟主机设置不同的端口,浏览器通过不同端口访问不同的web项目
    • 方案二:给每个虚拟主机设置不同的域名,浏览器通过不同域名访问不同的web项目
Nginx虚拟主机-配置端口

使用nginx部署多个web应用,通过不同端口访问不同web应用

  • 这里我们将演示方案一:虚拟主机监听端口
    • 通过88889999两个端口,分别访问两个web项目
准备两个web应用
  • 在E盘里准备了两个web应用
    • 第1个web应用:login
    • 第2个web应用:regist

在这里插入图片描述

修改nginx配置文件
  • 找到Nginx的conf/nginx.conf,打开并修改文件:
    • 其中每个server是一个虚拟主机,server中的listen是要监听的端口
    • 我们拷贝,得到两个server
      • 第1个:监听端口8888,配置login项目
      • 第2个:监听端口9999,配置regist项目
    # 第一个虚拟主机配置
    server {
        listen       8888;
        server_name  localhost;

        location / {
            root   E:\\login;
            index  index.html index.htm;
        }

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

	# 第二个虚拟主机配置
    server {
        listen       9999;
        server_name  localhost;

        location / {
            root   E:\\regist;
            index  index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
启动nginx,使用浏览器访问
  • 使用端口8888,访问travel:http://localhost:8888

  • 使用端口9999,访问regist:http://localhost:9999

在这里插入图片描述

小结
  • 准备两个静态项目
  • 修改nginx.conf
    • server{}复制,每个server就是一个虚拟主机。给两个虚拟主机分别设置不同的端口、项目路径
Nginx虚拟主机-配置域名

配置虚拟主机,能够使用指定域名访问web应用

  • 这里我们将演示方案二:虚拟主机监听域名
    • 通过www.test1.comwww.test2.com两个域名,分别访问两个web项目
修改hosts文件,设置域名映射
  • www.travel.comregist.travel.com两个域名是我们自定义的,如果想让浏览器通过两个域名能访问到nginx部署的web项目,必须要设置两个域名对应的ip。
  • 因为实际上计算机只能识别ip地址,是不能识别域名的。当我们向一个域名发请求时,必须要把域名转换成对应的ip地址,实际是还是通过ip地址向服务器发请求。
1 域名和ip映射介绍
  • 当我们上网时,在浏览器里输入的地址通常是域名,例如:http://www.jd.com
  • 当我们浏览器向http://www.jd.com域名发请求时,域名解析的流程如下:
    1. Windows会自动把本地的DNS配置,加载到本地DNS缓存中(第①步)
      • 本地的DNS配置文件是:C:\Windows\System32\drivers\etc\hosts
    2. 先查找本地的DNS缓存(第②步);如果本地缓存了域名对应的ip,则获取ip,直接向ip发请求(第④步)
    3. 如果本地没有找到,则请求到DNS服务器(第③步),得到对应的ip,然后发ip发请求(第④步)

在这里插入图片描述

2 修改hosts文件
  • www.login.comregist.regist.com域名,和127.0.0.1域名进行绑定,这样的话:

    • 浏览器上输入域名:www.login.com,实际访问的是绑定的ip127.0.0.1
    • 浏览器上输入域名:www.regist.com,实际访问的是绑定的ip127.0.0.1
  • 修改方式:打开C:\Windows\System32\drivers\etc\hosts文件,在文件最后增加:

    127.0.0.1 www.login.com
    127.0.0.1 www.regist.com
    
准备两个web应用
  • 在E盘里准备了两个web应用
    • 第1个web应用:login
    • 第2个web应用:regist

在这里插入图片描述

修改nginx配置文件

找到Nginx的conf/nginx.conf,打开并修改文件:

  • 其中每个server是一个虚拟主机,server中的listen是要监听的端口
  • 我们拷贝,得到两个server
    • 第1个:监听域名www.login.com,端口使用默认的80,配置login项目
    • 第2个:监听域名www.regist.com,端口使用默认的80,配置regist项目
    # 第1个虚拟主机:监听域名www.login.com,端口使用默认的80,配置login项目
    server {
        listen       80;
        server_name  www.login.com;

        location / {
            root   E:\\login;
            index  index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    # 第2个虚拟主机:监听域名www.regist.com,端口使用默认的80,配置regist项目
    server {
        listen       80;
        server_name  www.regist.com;

        location / {
            root   E:\\regist;
            index  index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
启动nginx并访问
  • 输入http://www.login.com,访问login项目
  • 输入http://www.regist.com,访问regist项目

在这里插入图片描述

Nginx反向代理

  • 代理分为
    • 正向代理
    • 反向代理
正向代理
  • 正向代理,简称代理,是客户端的代理

在这里插入图片描述

  • 设置代理的方式:
    • 在浏览器里,打开Internet选项

在这里插入图片描述

反向代理
  • 反向代理,是服务端的代理,与客户端没有关系。
    • 在服务器集群环境中,用户只需要访问代理服务器即可。客户端不需要关注也不知道每个服务器的地址
    • 在反向代理服务器中,可以设置防火墙、安全策略、过滤规则等安全设置,可以提高服务端的安全性
    • 反向代理服务器可以实现服务端的负载均衡

在这里插入图片描述

Nginx实现反向代理
  • 使用Nginx实现服务器的反向代理配置
  1. 准备一个服务器实例,这里使用Tomcat
  2. 修改配置nginx,使用Nginx作为服务端的代理(反向代理服务器)
  3. 启动Nginx,浏览器通过Nginx访问目标服务器
准备一个服务器实例
  • 把web应用mm.war拷贝到Tomcat的webapps

在这里插入图片描述

  • 双击Tomcat的bin\startup.bat,启动Tomcat
修改配置nginx,使用Nginx作为反向代理
  • 打开Nginx的conf\nginx.conf,修改配置信息

    1. http里增加upstream
    2. 修改server的配置
        upstream tomcat_servers{ # tomcat_servers 是自己命名的,可以叫其它名称
    		server 127.0.0.1:8080;   # 格式:  server 服务器的域名或ip:端口;
        }
    
        server {
            listen       80;
            server_name  localhost;
    
            location / {
                # root   E:\\travel;  
                
                proxy_pass http://tomcat_servers; #格式:proxy_pass http://upstream名称;
                index  index.html;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    

在这里插入图片描述

启动Nginx,浏览器通过Nginx访问目标服务器
  • 浏览器输入地址:http://localhost:80/mm,是Nginx的访问地址
    • 请求过程:浏览器发请求到Nginx
      • Nginx把请求分发到Tomcat上,由Tomcat处理
    • 响应过程:Tomcat把响应返回给Nginx
      • Nginx把响应返回给浏览器

在这里插入图片描述

Nginx负载均衡

  • 了解负载均衡的概念
  • 使用Nginx实现负载均衡
负载均衡介绍

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。

​负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

Nginx实现负载均衡的步骤
  • 在服务器集群环境中,要有多个服务器实例共同提供服务。这些服务器由Nginx实现负载均衡
  • Nginx实现负载均衡的步骤:
    1. 准备多个服务器实例,这里使用Tomcat
      • 服务器1地址:localhost:8081
      • 服务器2地址:localhost:8082
      • 服务器3地址:localhost:8083
    2. 修改配置nginx,实现负载均衡
      • 主要是配置文件中upstream的配置
    3. 启动Nginx,浏览器通过Nginx访问目标服务器
Nginx实现负载均衡
1 准备多个服务器实例
  • 这里我们使用Tomcat,部署启动三个服务。为了避免端口冲突,需要设置三个Tomcat使用不同的端口

在这里插入图片描述

  • 要修改每个tomcat里conf/server.xml,其中每个tomcat的三个端口都要修改

在这里插入图片描述

  • 三个Tomcat都部署了travel.war

    • 为了能让客户端可以区分访问的是哪个服务器,我们对三个Tomcat部署的ROOT代码做了以下修改
      • 8081的首页index.jsp,设置网页标签为tomcat1
      • 8082的首页index.jsp,设置网页标签为tomcat2
      • 8083的首页index.jsp,设置网页标签为tomcat3
  • 分别启动三个Tomcat

2 修改配置nginx,实现负载均衡
  • 打开Nginx的conf\nginx.conf,修改配置信息

    1. upstream里设置多个服务器的地址,并增加weight设置每个服务器被访问的权重
      • weight:服务器的权重,可以理解为服务器被访问到的机率
    2. 修改server的配置
        # 三个服务器8081:8082:8083 被访问到的机率是 10:5:2 
        upstream tomcat_servers{
            server 127.0.0.1:8081 weight=10;
            server 127.0.0.1:8082 weight=5;
            server 127.0.0.1:8083 weight=2;
        }
    
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                proxy_pass http://tomcat_servers;
                proxy_set_header Host $host;
                index  index.html;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    

nginx配置proxy_set_header Host $host的作用?
nginx中proxy_set_header Host h o s t 的作用及 host的作用及 host的作用及proxy_host, h o s t 与 host与 hosthttp_host的区别

3 启动Nginx,浏览器通过Nginx访问目标服务器
  • http://localhost:80
Linux版Nginx的使用

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值