nginx入门级讲解(一)

作为一名程序员,多数人对nginx都不陌生,它最核心功能就是反向代理和负载均衡。但是如果你是第一次接触nginx,可能就对这个有些陌生。网上随便一搜,就有一大堆的教程,那么今天,我打算换一种方式讲解一下。


1,反向代理

我举一个生动的例子,同时画一个图方便理解
nginx反向代理
  • 假设A是顾客,B是店家,A要去B那里买东西,但是这个时候B由于一些原因有事,有点忙不过来,于是他雇佣C让帮他卖,这个时候A就通过C去购买东西。这个时候A发现C的效率要比B高很多,因为B作为店主,可能中途会因为别的琐事耽搁了,而C就只负责帮助顾客结账。而其中的业务部分,C就是一个桥梁,A有什么需求可以通过C告诉B,关于营收等业务部分,由C整理好汇报给B,这个过程可以大大缓解B的压力。
关于反向代理,你就可以这么理解,那为什么叫反向呢?
  • 反向和正向是相对于用户而言的,用户到卖家的这个过程就是正向,而卖家到用户的过程就是反向。同理,用户从浏览器发起请求道服务端这个过程就是正向,而从服务端到用户的这个过程就是反向,nginx的反向代理就是相对于服务器而言的

  • 有反向当然也有正向,什么情况下是正向呢?对,就是VPN。关于正向代理,我们也可以理解为:还是由C做中间人,但变成了C作为A的代言人去B那买东西。


2,负载均衡

关于负载均衡,我们也可以举一个生动的例子。
负载均衡
  • 原本通过反向代理的方式,B的店铺已经忙的过来了,但是这个时候,由于附近就他一家店,在某个时候,突然有大量的顾客进来买东西,即便有了C,也忙不过来了,于是B打算再到附近开一家店,另一家店的设施和商品和之前的一模一样,B把它交给D来打理,这时B又有足够的时间来处理别的事了,而且C这时也没有那么大的压力了。
关于负载均衡,就可以这样理解。
  • 在实际的开发中,nginx就相当于一个中间人的身份,在部署项目时,针对同一个项目会部署多台服务器来达到负载均衡,设置好后,用户来访问时,就有多台服务器来处理用户的请求,缓解服务器的压力。
  • nginx的主要使用场景就是处理静态资源的,而非静态资源请求部分,最终通过nginx交给后端进行处理,也就是动静分离,后端最终在再将处理的结果发送到前端,由前端完成渲染,最终将处理的结果通过浏览器显示给用户。
我们通过两个简单的例子类比了nginx的反向代理和负载均衡,当然,nginx本身也可以作为一个静态资源的服务器,还可以做正向代理。我们这里只是说了日常生活中经常使用到的场景。说完了这些,我们再来说一说nginx的安装和使用。

3,安装nginx

nginx可以通过命令直接安装
   sudo apt-get install nginx
   #或
   sudo yum install nginx
  • 卸载nginx
$ sudo apt-get --purge autoremove nginx
除此之外,还可以手动安装,这里以ubuntu系统为例:
  • 安装依赖包
$ apt-get install gcc
$ apt-get install libpcre3 libpcre3-dev
$ apt-get install zlib1g zlib1g-dev
$ apt-get install openssl openssl-dev
#如果openssl-dev无法安装就安装openssl和libssl-dev
  • 下载nginx
# 一般手动安装都安装在这里,你也可以换别的地方安装
$ cd /usr/local
$ mkdir nginx
$ cd nginx
$ wget http://nginx.org/download/nginx-1.13.7.tar.gz
$ tar -zxvf nginx-1.13.7.tar.gz 
  • 编译nginx
# 进入nginx目录
/usr/local/nginx/nginx-1.13.7
# 执行命令
./configure
# 执行make命令
make
# 执行make install命令
make install
  • nginx常见命令
    如果是命令直接安装的就:
  #启动
  $ sudo service nginx start
  #重启
  $ sudo service nginx start
  #停止
  $ sudo service nginx stop
虽然我们可以通过命令直接启动,但是实际开发中,更多的还是进入nginx的目录,通过可执行文件启动,然后手动指定配置文件,原因是通过命令启动的nginx使用的是默认的nginx.conf,而实际开发中可能会有多个项目,如果把不同项目的配置全部写到同一个配置文件里,实际上是不方便进行维护的。因此,接下来还是主要说一下通过可执行文件启动。


4,nginx启动

4.1,通过命令启动nginx
   # 如果不知道nginx在哪,可通过该命令查询
   $ whereis nginx  
nginx
  • 这里可以看到我的nginx位于/usr/local/nginx目录(如果是命令直接安装的,会不一样,不同系统安装的不同nginx版本都会导致不一样),在conf下面,我们可以配置多个配置文件。如果要启动nginx。
   $/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

这里我们通过指定配置文件的方式,启动了/usr/local/nginx/conf/这个目录下的nginx.conf这个配置文件,这个也是ningx默认的配置文件,如果是默认的配置文件,可以不指定,直接通过 /usr/local/nginx/sbin/nginx来启动。

那么,通过命令安装的话,是什么样呢?
nginx
  • 这个nginx就是通过命令直接安装的,配置部分在/etc/nginx里面,而可执行部分在/usr/sbin/里面,我们就通过下面这个命令启动。
   $/usr/sbin/nginx -c /etc/nginx/nginx.conf
  • 这时,只需要在浏览器输入你的ip就可以了,如果出现以下画面,恭喜,nginx已经成功安装并且启动了。


    在浏览器中访问nginx
  • :由于nginx默认监听的是80端口,在linux系统中,在非root下,1024以下的端口是无法使用的,如果因为这个原因导致nginx无法成功启动的话,要么换成root用户,要么换一个端口(换端口的同时记得配置防火墙)。

4.2,配置文件
  • 之前说过,如果存在多个项目时,我们往往不会配置在同一个配置文件中,可以新建一个配置文件。我们可以复制一份nginx.conf文件,然后再进行修改。
    或者我们再重新新建一个 default.dconf.d的文件夹,然后再到里面写nginx的配置。
nginx.conf配置文件
  • 这个就是nginx.conf文件,注意红色框框部分,意思就是以后可以直接在conf.d的文件夹下只配置server部分,在default.d的文件夹下只配置location部分,而不用复制所有的配置部分。
4.3,niginx的conf配置
4.3.1,检查.conf文件
  • 如果nginx配置出错,nginx的启动就会报错,这时,我们就可以检查nginx的配置是否出错,如下图所示:


    检查nginx的配置
  • 这里我们通过-t参数检查的就是默认的nginx.conf。如果你想检查别的地方的配置文件,加上-c参数就好,如果命令行提示oksuccessful等关键词,就代表你的配置没问题,如果出错了,它会显示是第几行出错,根据错误的提示改过来就好了。
4.3.2,nginx的日志
  • 实际使用过程中,nginx已经正常启动了,但是由于修改了配置文件,然后重启,导致nginx无法正常访问,这时,我们还可以通过检查日志来看出错的地方(日志太多了,不演示了)。


    nginx的日志

nginx的其它命令参数

-s stop:停止
-s quit : 完成已经请求的连接后在停止
-s reload : 重启,重新加载配置文件(每次更新配置后,需要reload一下)

到这里,nginx就已经讲的差不多了,主要讲的还是反向代理和负载均衡,然后成功的启动nginx,关于nginx.conf里面的配置部分,我相信网上其它的教程写的都很详细了,不做介绍,用到时再说。

你可能感兴趣的:(nginx入门级讲解(一))