零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

导读:本篇文章讲解 零基础学JavaWeb开发(二十七)之 nginx快速入门(1),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、必须了解的前置知识

DNS域名解析

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

域名的背后是如何解析成ip?

javaweb ip+端口

域名访问呢?

搭建外网环境 公网IP

需要将域名解析成ip

购买域名

什么是一级?

先购买一个一级域名 例如

mayikt.com—– 收费的

什么是二级?

www.mayikt.com

找到购买域名的 dns 解析 —

@.mayikt.com

www.mayikt.com—–对应解析的ip

腾讯云、阿里云

dns解析

例如:http://www.mayikt.com

1. 先从本地host文件中使用域名获取对应的ip地址;

2. 如果本地host文件中没有的话,就去运营商获取ip地址;

windows:C:\Windows\System32\drivers\etc

linux:/etc/hosts 

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

二、Nginx概述

1.Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

2.其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

3.Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

4.OpenResty(又称:ngx_openresty) 是一个基于 Nginx 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。

OpenResty —nginx

三、Nginx实际应用场景

1.反向代理 客户端发送请求达到Nginx服务器,Nginx转发到真实服务器访问,从而保证真实服务安全性;

2.负载均衡 能够对集群的节点实现负载均衡和故障转移,负载均衡算法:(轮询、权重、随机、hash等);

3.微服务网关入口 ,可以对微服务网关实现集群;

4.静态服务器 比Tomcat性能高很多,可以存放静态资源;—–推荐以后将静态资源存放到CDN

5.保护网站 使用nginx+lua 实现对请求实现服务限流;

四、Nginx环境安装

1.windows 安装nginx

2.linux 安装nginx(纯原生方式非常麻烦)提前下载很多依赖 10分钟—不推荐

3.使用docker安装nginx 1分钟

4.使用宝塔可视化界面安装nginx 5s

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

1、Windows环境安装nginx

1.nginx 下载地址:

nginx: download

2. 解压当前目录

3. 双击nginx.exe

4. Nginx默认端口号为80

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

1.conf 配置文件 (nginx核心配置文件 nginx.conf)2.contrib 存放一些实用工具3.docs 存放文档4.html 存放Html 存放静态资源 5.logs 存放日志文件6.temp 临时文件

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

2、停止nginx

1.打开任务管理器 →找到nginx进程直接杀死即可。发现如果还是没有停止nginx

这是因为:nginx在启动后,会有一个master进程和多个worker进程 需要将所有的

nginx进程杀死才可以。

2.C:\mayikt\nginx-1.0.2>nginx.exe -s stop或

C:\mayikt\nginx-1.0.2>nginx.exe -s quit

注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

其他命令:

1、启动:

C:\mayikt\nginx-1.0.2>start nginx或

C:\mayikt\nginx-1.0.2>nginx.exe

2、停止:

C:\mayikt\nginx-1.0.2>nginx.exe -s stop或

C:\mayikt\nginx-1.0.2>nginx.exe -s quit

注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

3、重新载入Nginx:

C:\mayikt\nginx-1.0.2>nginx.exe -s reload

当配置信息修改,需要重新载入这些配置时使用此命令。

4、重新打开日志文件:

C:\mayikt\nginx-1.0.2>nginx.exe -s reopen

5、查看Nginx版本:

C:\mayikt\nginx-1.0.2>nginx -v

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

五、软负载与硬负载区别

1.软负载是基于服务器上安装的特定软件比如Nginx实现负载均衡

2.硬负载均衡是基于固定的硬件实现负载均衡比如F5

六、基于Nginx相关配置

1、基于Nginx存放Html静态资源

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

例如我们的项目 是前后端分离的,可以将前端静态资源直接存放到

html目录。

member.mayikt.com:80—-

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

根据业务分域名

每个子项目都是有自己独立的团队的

会员团队 域名—member.mayikt.com

支付团队 域名 pay.mayikt.com

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

member:

<!DOCTYPE html>
<html>
<head>
<title>member</title>

</head>
<body>
<h1>member service  </h1>
</body>
</html>

order:

<!DOCTYPE html>
<html>
<head>
<title>order</title>

</head>
<body>
<h1>order service  </h1>
</body>
</html>

Nginx相关配置

1.在C:\Windows\System32\drivers\etc host文件中配置

127.0.0.1 member.mayikt.com
127.0.0.1 order.mayikt.com

2.Nginx中的server_name指令主要用于配置基于名称的虚拟主机,server_name指令在接到请求后的匹配顺序

例如:访问member.mayikt.com 会从html/member 目录中查找静态资源

	server {
        listen       80;
        server_name  member.mayikt.com;
        location / {
            root   html/member;
            index  index.html index.htm;
        }
    }

2.例如:访问order.mayikt.com 会从html/order 目录中查找静态资源

	server {
        listen       80;
        server_name  order.mayikt.com;
        location / {
            root   html/order;
            index  index.html index.htm;
        }
    }

2、基于Nginx反向代理/正向代理

2.1、反向代理

客户端请求达到Nginx代理服务器 在通过代理服务器转发到真实服务器 隐藏服务器端真实的IP信息。

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

1.host文件新增:

127.0.0.1 www.mayikt.com
127.0.0.1 member.mayikt.com
127.0.0.1 order.mayikt.com

2.nginx相关配置:

server {
        listen       80;
        server_name  www.mayikt.com;
        location / {
            proxy_pass   http://127.0.0.1:8080;
            index  index.html index.htm;
        }
    }

3.访问测试

http://127.0.0.1:8080/getMayikt

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

2.2、正向代理

正向代理,是在用户端的,比如需要访问某些国外网站,例如 github 在相关部门的允许情况下,我们可以使用vpn。

并且vpn是在我们的用户浏览器端设置的(并不是在远端的服务器设置)。

浏览器先访问vpn地址,vpn地址转发请求,并最后将请求结果原路返回来。

零基础学JavaWeb开发(二十七)之 nginx快速入门(1)

正向代理与反向代理区别:正向代理隐藏用户的真实行为、反向代理隐藏真实服务器

正向代理 需要 客户端安装软件 代理 隐藏 客户端用户真实行为

反向代理 —–安装服务器端

3、基于Nginx负载均衡策略

1、轮询(默认)

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

2、指定权重

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

3、IP绑定 ip_hash

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

4、fair(第三方)

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

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

Nginx负载均衡提供上游服务器(真实业务逻辑访问的服务器),负载均衡、故障转移、失败重试、容错、健康检查等。

当上游服务器(真实业务逻辑访问的服务器)发生故障时,可以转移到其他上游服务器(真实业务逻辑访问的服务器)。

3.1、轮询配置

	###定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮训机制
    upstream  backServer{
	    server 127.0.0.1:8080;
	    server 127.0.0.1:8081;
	}
	server {
        listen       80;
        server_name  upstream.mayikt.com;
        location / {
		    ### 指定上游服务器负载均衡服务器
		    proxy_pass http://backServer;
            index  index.html index.htm;
        }
    }

3.2、权重配置

	###定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮训机制
    upstream  backServer{
	    server 127.0.0.1:8080 weight=2;
	    server 127.0.0.1:8081 weight=1;
	}
	server {
        listen       80;
        server_name  upstream.mayikt.com;
        location / {
		    ### 指定上游服务器负载均衡服务器
		    proxy_pass http://backServer;
            index  index.html index.htm;
        }
    }

3.3、故障转移

当转发地址发生了宕机,无法访问 nginx 会默认自动故障转移切换到下一个地址。

集群 保证服务器端高可用 故障转移 立马切换到下一台

根据业务拆分 项目

例如 会员团队支付团队 订单团队

mayikt.com—公司购买的域名

dns 如何解析配置ip呢?

会员团队—-member.mayikt.com—解析会员团队对应的ip

支付团队—-pay.mayikt.com—解析支付团队对应的ip

支付团队—-order.mayikt.com—解析支付团队对应的ip

购买一个域名 学习 如何配置二级域名

4、Nginx Location指令详解

通过指定模式来与客户端请求的URI相匹配,基本语法如下:location [=|~|~*|^~|@] pattern{……}

1、没有修饰符 表示:必须以指定模式开始,如:

server {
  server_name www.mayikt.com;
  location /member {
      proxy_pass   http://127.0.0.1:8080/;
      index  index.html index.htm;
  }
}
访问http://member.mayikt.com/member 反向代理:http://127.0.0.1:8080/
那么,如下是对的:
http://member.mayikt.com/member
http://member.mayikt.com/member?p1
http://member.mayikt.com/member/
http://member.mayikt.com/Member

注意 proxy_pass http://127.0.0.1:8080/; 后面需要加上 / 反向代理到http://127.0.0.1:8080 不需要

加上location匹配的值。

2、=表示:必须与指定的模式精确匹配

server {
  server_name www.mayikt.com;
  location = /member {
      proxy_pass   http://127.0.0.1:8080/;
      index  index.html index.htm;
  }
}
访问http://www.mayikt.com/member 反向代理:http://127.0.0.1:8080
那么,如下是对的:
http://www.mayikt.com/member
http://www.mayikt.com/member?p1
如下是错误:
http://www.mayikt.com/member/
http://www.mayikt.com/memberabc

3、~ 表示:指定的正则表达式要区分大小写

server {
  server_name www.mayikt.com;
  location ~ ^/member$ {
      proxy_pass   http://127.0.0.1:8080;
      index  index.html index.htm;
  }
}
访问http://www.mayikt.com/member 反向代理:http://127.0.0.1:8080
那么,如下是对的:
http://www.mayikt.com/member
http://www.mayikt.com/member?p1
如下是错误:
http://www.mayikt.com/Member/
http://www.mayikt.com/memberabc

4.~* 表示:指定的正则表达式不区分大小写

server {
  server_name www.mayikt.com;
  location ~* ^/member$ {
      proxy_pass   http://127.0.0.1:8080;
      index  index.html index.htm;
  }
}
访问http://www.mayikt.com/member 反向代理:http://127.0.0.1:8080
那么,如下是对的:
http://www.mayikt.com/member
http://www.mayikt.com/member?p1
http://www.mayikt.com/Member
如下是错误:
http://www.mayikt.com/member/
http://www.mayikt.com/memberabc

1:带有“=“的精确匹配优先

2:没有修饰符的精确匹配

3:正则表达式按照他们在配置文件中定义的顺序

4:带有“^~”修饰符的,开头匹配

5:带有“~” 或“~*” 修饰符的,如果正则表达式与URI匹配

6:没有修饰符的,如果指定字符串与URI开头匹配

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111816.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!