作为一名程序员,多数人对nginx都不陌生,它最核心功能就是反向代理和负载均衡。但是如果你是第一次接触nginx,可能就对这个有些陌生。网上随便一搜,就有一大堆的教程,那么今天,我打算换一种方式讲解一下。
1,反向代理
我举一个生动的例子,同时画一个图方便理解
- 假设A是顾客,B是店家,A要去B那里买东西,但是这个时候B由于一些原因有事,有点忙不过来,于是他雇佣C让帮他卖,这个时候A就通过C去购买东西。这个时候A发现C的效率要比B高很多,因为B作为店主,可能中途会因为别的琐事耽搁了,而C就只负责帮助顾客结账。而其中的业务部分,C就是一个桥梁,A有什么需求可以通过C告诉B,关于营收等业务部分,由C整理好汇报给B,这个过程可以大大缓解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
$ 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
$ 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
/usr/local/nginx/nginx-1.13.7
./configure
make
make install
$ sudo service nginx start
$ sudo service nginx start
$ sudo service nginx stop
虽然我们可以通过命令直接启动,但是实际开发中,更多的还是进入nginx的目录,通过可执行文件启动,然后手动指定配置文件,原因是通过命令启动的nginx使用的是默认的nginx.conf,而实际开发中可能会有多个项目,如果把不同项目的配置全部写到同一个配置文件里,实际上是不方便进行维护的。因此,接下来还是主要说一下通过可执行文件启动。
4,nginx启动
4.1,通过命令启动nginx
$ whereis nginx
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3zxGkYJY-1627309490325)(https://upload-images.jianshu.io/upload_images/16821987-eb8532f9dd922d80.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
- 这里可以看到我的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就是通过命令直接安装的,配置部分在
/etc/nginx 里面,而可执行部分在/usr/sbin/ 里面,我们就通过下面这个命令启动。
$/usr/sbin/nginx -c /etc/nginx/nginx.conf
4.2,配置文件
- 之前说过,如果存在多个项目时,我们往往不会配置在同一个配置文件中,可以新建一个配置文件。我们可以复制一份nginx.conf文件,然后再进行修改。
或者我们再重新新建一个 default.d 和conf.d 的文件夹,然后再到里面写nginx的配置。
- 这个就是nginx.conf文件,注意红色框框部分,意思就是以后可以直接在
conf.d 的文件夹下只配置server部分,在default.d 的文件夹下只配置location部分,而不用复制所有的配置部分。
4.3,niginx的conf配置
4.3.1,检查.conf文件
- 如果nginx配置出错,nginx的启动就会报错,这时,我们就可以检查nginx的配置是否出错,如下图所示:
- 这里我们通过
-t 参数检查的就是默认的nginx.conf。如果你想检查别的地方的配置文件,加上-c 参数就好,如果命令行提示ok ,successful 等关键词,就代表你的配置没问题,如果出错了,它会显示是第几行出错,根据错误的提示改过来就好了。
4.3.2,nginx的日志
- 实际使用过程中,nginx已经正常启动了,但是由于修改了配置文件,然后重启,导致nginx无法正常访问,这时,我们还可以通过检查日志来看出错的地方(日志太多了,不演示了)。
nginx的其它命令参数
-s stop :停止 -s quit : 完成已经请求的连接后再停止 -s reload : 重启,重新加载配置文件(每次更新配置后,需要reload一下)
到这里,nginx就已经讲的差不多了,主要讲的还是反向代理和负载均衡,然后成功的启动nginx,关于nginx.conf里面的配置部分,我相信网上其它的教程写的都很详细了,不做介绍,用到时再说。
|