Nginx概念

Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少并发能力强,它是专为性能优化而开发,性能是其最重要的考量,实现上非常的注重效率,能经受高负载的考验。

Nginx正向代理

正向代理:正向代理在平时生活中,我们都有接触。例如我们想访问一个国外的网站,往往都需要才能访问,而其实就是找了一个中间的服务器代理我们的电脑去访问国外的网站。


反向代理: 反向代理中,客户端对于代理是无感知的,只需要将请求告知代理服务器即可。至于代理服务器如何将客户端所需要的东西返回,客户端是不关心的,并且对于目标服务器的真实地址也是隐藏的。

nginx 二维码无法显示_nginx 二维码无法显示


举例说明

也许上面的描述还不是很好理解,下面举两个现实中的例子区分正向与反向代理。例如:1:我们去餐厅吃饭,告诉服务员菜单,而服务员再告诉厨师,厨师只需要按照服务员手上的菜单制作好交给服务员即可,服务员再把菜呈现给客户。2:还是上述例子,如果这个时候,客户所需要的菜恰好没有了,但客户又急需要。于是厨师去跑去了别的连锁饭店借了个菜过来,然后由服务员呈现给客户,而客户对于这个菜最终由谁制作的是不知道的。

通过上述案例,可以知道,正向代理简单的理解就是客户端想访问外面的网站,客户端知道目标服务器的地址,但是无法直接访问,需要一个中间商正向代理客户端去访问目标服务器。而反向代理简单理解就是服务器想让客户端访问它,但是又不想暴露自己,所以也需要一个中间商反向代理它供外界访问。即正向代理代理的是客户端,反向代理代理的是目标服务器。

Nginx负载均衡

负载均衡(Load Balance),它在网络现有结构之上可以提供一种廉价、有效、透明的方法来扩展网络设备和服务器的带宽,   
并可以在一定程度上增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性等。

nginx 二维码无法显示_nginx 二维码无法显示_02


负载均衡:由于早期的互联网应用,业务单一,用户需求较为简单。所以只需要一台服务器即可。但是随着时代的发展,业务应用场景越来越复杂,用户访问量也越来越大,需求也越来越复杂。这个时候一台服务器已经无法满足需求了。在以往的单体架构中,一旦出现单点故障,后果不堪设想。因此软件设计者提出了集群化的部署架构,将同一个软件应用部署到多台服务器上,从而就有了负载均衡的理念。

负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。

负载均衡的实现技术

-	基于DNS实现负载均衡
-	基于硬件实现负载均衡
-	基于软件实现负载均衡
软件实现负载均衡算法主要有轮询,IP哈希、加权轮询等方式。

Nginx的安装

Nginx的安装可以参考官网,这里主要介绍在Ubuntu上安装Nginx及简单配置。

使用Linux命令查询Ubuntu自带的Nginx安装源

apt search nginx

nginx 二维码无法显示_nginx 二维码无法显示_03


在下面可以看见nginx的安装源,然后通过命令直接安装即可

apt install nginx

nginx 二维码无法显示_nginx 二维码无法显示_04

安装后 校验是否安装成功,首先通过输入命令查询是否开启了80端口号(nginx默认端口号),然后在网址中通过输入虚拟机ip地址+端口号访问看到nginx欢迎页面即可。
查看端口

ss -nat

nginx 二维码无法显示_nginx 二维码无法显示_05


查看虚拟机的ip

ifconfig

nginx 二维码无法显示_服务器_06


ip地址+端口号访问,看到下面的内容即成功了(内容可能不一样)

nginx 二维码无法显示_nginx_07


配置Nginx的反向代理

因为之前Nginx的安装源Ubuntu上自带的,所以它的配置信息默认在/etc/nginx/目录下

nginx 二维码无法显示_服务器_08


打开nginx.conf配置

vim nginx.conf
注意:如果提示没有vim命令,通过apt install vim 命令安装即可

nginx 二维码无法显示_服务器_09


打开这个nginx.conf配置后,我们可以在里面找到inclue命令,发现它包含了2个文件,而第一个是.conf结尾,所以猜测是配置信息,不需要管它,接下来到第二个inclued的目录下去查看有什么文件。

注意

在vim进入nginx.conf文件后,通过输入i命令 即可编辑 如果想退出先按ESC 然后再按shift+分号键输入q(不保存)退出即可.

nginx 二维码无法显示_nginx 二维码无法显示_10


在该目录下,可以看见default文件,通过vim打开,查看其中的内容

nginx 二维码无法显示_服务器_11


看到上述内容 ,似乎有种似曾相识的感觉,其中有几个重要的配置,listen 80 即配置的端口号 root 指向静态页面的目录 index指明ip+端口号后访问的首页,location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,可以配置多个location。查看root 所指向的目录文件

nginx 二维码无法显示_nginx 二维码无法显示_12


nginx 二维码无法显示_nginx_13

跳转到该目录下后可以发现有一个html文件,打开后 似乎焕然大悟。它里面的内容就是最开始我们在浏览器中看到的内容。

依葫芦画瓢
我们只需要在/etc/nginx/sites-enabled/配置一个与default文件类似的配置即可,指明其端口号,和网页地址,以及后端服务器地址即可。

创建和编辑新文件

vim myhtml

nginx 二维码无法显示_nginx_14


配置好后,通过按ESC退出 然后按shift+分号 输入wq回车保存即可

nginx 二维码无法显示_nginx_15


在root指向的目录中放置自己的静态资源即可,index指向的是index.html,所以访问的首页就是index.html

nginx 二维码无法显示_服务器_16


启动nginx

service nginx start

nginx 二维码无法显示_负载均衡_17


注意: 如果不是以root身份启动,可能需要输入密码。

访问

虚拟机ip+配置的端口号

nginx 二维码无法显示_负载均衡_18

结尾
如有错误,请谅解!