启动

建议使用第一种,第二种会使窗口一直处于执行中,不能进行其他命令操作C:\server\nginx-1.19.2> start nginx

C:\server\nginx-1.19.2> nginx.exe

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

C:\server\nginx-1.19.2> nginx.exe -s stop

C:\server\nginx-1.19.2> nginx.exe -s quit

重载Nginx

当配置信息修改,需要重新载入这些配置时使用此命令C:\server\nginx-1.19.2> nginx.exe -s reload

重新打开日志文件C:\server\nginx-1.19.2> nginx.exe -s reopen

查看Nginx版本

C:\server\nginx-1.19.2> nginx -v

查看配置文件是否正确C:\server\nginx-1.19.2> nginx -t

简单Demo

利用SwitchHost软件编辑域名和IP的映射关系,或到目录C:\Windows\System32\drivers\etc下,编辑hosts文件,增加配置如下(Mac 同理)127.0.0.1 kerwin.demo.com PS:推荐使用软件SwitchHost,工作时几乎是必用的 修改配置,如图所示:

效果如图所示:

Nginx在架构体系中的作用

==============

网关 (面向客户的总入口) 虚拟主机(为不同域名 / ip / 端口提供服务。如:VPS虚拟服务器) 路由(正向代理 / 反向代理) 静态服务器 负载集群(提供负载均衡)

网关

==

网关:可以简单的理解为用户请求和服务器响应的关口,即面向用户的总入口

网关可以拦截客户端所有请求,对该请求进行权限控制、负载均衡、日志管理、接口调用监控等,因此无论使用什么架构体系,都可以使用Nginx作为最外层的网关

虚拟主机

====

虚拟主机的定义:虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供 www 服务,这样就可以实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的。

通过 Nginx 可以实现虚拟主机的配置,Nginx 支持三种类型的虚拟主机配置

基于 IP 的虚拟主机 基于域名的虚拟主机 基于端口的虚拟主机

表现形式其实大家多见过,即:

每个 server 就是一个虚拟主机

http {

server{

}

server{

}

}

路由

==

在Nginx的配置文件中,我们经常可以看到这样的配置:

location / {

#…

}

location在此处就起到了路由的作用,比如我们在同一个虚拟主机内定义两个不同的路由,如下:

location / {

proxy_pass https://www.baidu.com/;

}location /api {

proxy_pass https://apinew.juejin.im/user_api/v1/user/get?aid=2608&user_id=1275089220013336¬_self=1;

}

效果如下:

因为路由的存在,为我们后续解决跨域问题提供了一定的思路,同时配置内容和API接口等更加方便

PS:路由的功能非常强大,支持正则匹配

正向与反向代理

=======

此处额外解释一下proxy_pass的含义

在Nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加 /,表示绝对根路径;

如果没有/,表示相对路径

正向代理

代理客户; 隐藏真实的客户,为客户端收发请求,使真实客户端对服务器不可见; 一个局域网内的所有用户可能被一台服务器做了正向代理,由该台服务器负责 HTTP 请求; 意味着同服务器做通信的是正向代理服务器;

反向代理

代理服务器; 隐藏了真实的服务器,为服务器收发请求,使真实服务器对客户端不可见; 负载均衡服务器,将用户的请求分发到空闲的服务器上; 意味着用户和负载均衡服务器直接通信,即用户解析服务器域名时得到的是负载均衡服务器的 IP ;

共同点

都是做为服务器和客户端的中间层 都可以加强内网的安全性,阻止 web 攻击 都可以做缓存机制,提高访问速度

区别

正向代理其实是客户端的代理,反向代理则是服务器的代理。 正向代理中,服务器并不知道真正的客户端到底是谁;而在反向代理中,客户端也不知道真正的服务器是谁。 作用不同。正向代理主要是用来解决访问限制问题;而反向代理则是提供负载均衡、安全防护等作用。

静态服务器

=====

静态服务器是Nginx的强项,使用非常容易,在默认配置下本身就是指向了静态的HTML界面,如:

location / {

root html;

index index.html index.htm;

}

所以前端同学们,如果构建好了界面,可以进行相应的配置,把界面指向目标文件夹中即可,root指的是html文件夹

负载均衡

====

负载均衡功能是Nginx另一大杀手锏,一共有5种方式,着重介绍一下。

轮询

==

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

upstream tomcatserver {

server 192.168.0.1;

server 192.168.0.2;

}

轮询策略是默认的负载均衡策略

指定权重

====

即在轮询的基础之上,增加权重的概念,weight和访问比率成正比,用于后端服务器性能不均的情况,配置如下:

upstream tomcatserver {

server 192.168.0.1 weight=1;

server 192.168.0.2 weight=10;

}

IP Hash

=======

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

upstream tomcatserver {

ip_hash;

server 192.168.0.14:88;

server 192.168.0.15:80;

}

fair

====

第三方提供的负载均衡策略,按后端服务器的响应时间来分配请求,响应时间短的优先分配,生产环境中有各种情况可能导致响应时间波动,需要慎用

upstream tomcatserver {

server server1;

server server2;

fair;

}

url_hash

=========

第三方提供的负载均衡策略,按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器

upstream tomcatserver {

server squid1:3128;

server squid2:3128;

hash $request_uri;

hash_method crc32;

}

Nginx的模块化设计

===========

先来看看Nginx模块架构图:

这5个模块由上到下重要性一次递减。

(1)核心模块;

核心模块是Nginx服务器正常运行必不可少的模块,如同操作系统的内核。它提供了Nginx最基本的核心服务。像进程管理、权限控制、错误日志记录等;

(2)标准HTTP模块;

标准HTTP模块支持标准的HTTP的功能,如:端口配置,网页编码设置,HTTP响应头设置等;

(3)可选HTTP模块;

可选HTTP模块主要用于扩展标准的HTTP功能,让Nginx能处理一些特殊的服务,如:解析GeoIP请求,SSL支持等;

(4)邮件服务模块;

邮件服务模块主要用于支持Nginx的邮件服务;

(5)第三方模块;

第三方模块是为了扩展Nginx服务器应用,完成开发者想要的功能,如:Lua支持,JSON支持等;

模块化设计使得Nginx方便开发和扩展,功能很强大

Nginx的请求处理流程

============

基于上文中的Nginx模块化结构,我们很容易想到,在请求的处理阶段也会经历诸多的过程,Nginx 将各功能模块组织成一条链,当有请求到达的时候,请求依次经过这条链上的部分或者全部模块,进行处理,每个模块实现特定的功能。

一个 HTTP Request 的处理过程:

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。** [外链图片转存中…(img-xM0ZDNZD-1711114059059)] [外链图片转存中…(img-SWCRUimO-1711114059060)] [外链图片转存中…(img-IUkfOAwS-1711114059061)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java) [外链图片转存中…(img-QdcHxGFR-1711114059061)]

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

[外链图片转存中…(img-LIT84YPE-1711114059062)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: