【Linux学习笔记】十六、nginx进阶

十一、nginx进阶

  • nginx进阶
    web网络服务是一种被动访问的服务程序,就是只有收到互联网中其他主机发出的请求后才会响应,并将响应信息通过HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)传送给用户。
    目前能提供web网络服务的程序有IIS、Nginx、Apache等。其中,IIS(internet information services),是windows系统中默认的web服务程序。
    目前的淘宝网、京东网等绝大多数网址,都是以nginx软件为官网入口,给用户提供html文件。

1、web服务器和web框架的关系
web服务器(比如nginx),就是接受HTTP请求(例如:www.taobao.com) 并返回数据
web框架(比如django,falsk),是开发web应用程序,处理接受到的数据。
2、nginx简介
nginx是一个开源的、支持高性能的、高并发(能支持几万并发连接)的www服务软件,是一个俄罗斯人lgor sysoev开发的,作者将源代码开源并供全球享用。nginx比apache性能改进很多,是一款轻量型的网站服务软件,是被公认系统资源消耗最低(在3万并发连接下开启10个nginx线程消耗的内存不到200M)且并发能力最强、稳定性和功能丰富而迅速把apahe给淘汰了。
并且nginx还可以作为http反向代理、负载均衡、以及缓存服务使用。

3、nginx源代码编译安装
我们之前用的都是yum安装,但是yum安装都是自动下载自动安装到固定的位置。所以这里我们要讲源代码编译安装(该方法适用于其他各种你想编译安装的第三方软件),这种安装方式更适合企业服务器环境,因为它支持开启nginx的第三方功能,就是可以安装额外的功能;而且源代码编译安装我们还可以指定安装路径、指定配置文件的路径;而且有的软件如果阿里yum源里面没有,你就得自己用源代码编译安装。
编译安装的步骤:

  • 下载nginx源代码。源代码不管是什么语言写的,不过一般是默认C语言写的,就是一堆文件、一堆代码。这些文件还没有整合起来,所以不能工作。所以我们先要搭建编译环境。
  • 在系统上安装编译环境。安装编译nginx依赖的一些环境,如果没有这些环境就需要安装这些环境。
  • 开始编译安装。就是使用linux命令把nginx源代码整理成一个可以使用的工具。
  • 可以使用了
    所以,首先我们要检查一下你的系统上有没有nginx,因为前面讲静态网页时安装过,要保证你的nginx已经卸载了。然后再查看一下你的80端口情况,看这个端口有没有运行其他服务。前面讲过nginx和apache的httpd都默认运行在80端口上的。mysql默认的端口是3306。

(1)搭建nginx依赖的环境:环境安装
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel pcre pcre-devel -y 下面是一点简单的说明:
nginx编译依赖gcc环境,所以要安装gcc.
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块用pcre来解析正则表达式。
zlib库提供了很多压缩和解压缩的方式。
openssl是一个强大的安全套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议。因为nginx不仅支持http协议还支持https协议(就是在ss1协议上传输http),所以我们也要安装。

(2)下载nginx源码,并编译安装

  • 用wget命令去nginx官网download nginx-1.12.0的安装压缩包:wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
    下载完毕后是在/root目录下,并且是一个压缩文件。
    现在我们把nginx安装到/opt里面,先在/opt里面新建一个文件夹ngx,然后把压缩包移动到ngx里面,然后用命令:
    tar -zxvf nginx-1.12.0.tar.gz在当前路径下解压缩,解压缩完毕我们可以看到是一个文件夹:nginx-1.12.0/ 。

下面就是进入nginx源码包nginx-1.12.0进行编译安装。

  • 配置、编译安装、开启nginx状态检测功能
  • A:进入这个解压后的文件夹nginx-1.12.0
  • B:查看一下nginx-1.12.0里面的东西,上图画横线的东西就是nginx官网提供给我们的各种源代码。其中,我们找绿色的configure文件,这个文件有x就是有可执行权限的,这个文件就是一个安装脚本。下面就用命令执行安装脚本configure,进行配置安装:
  • C:./configure --prefix=/opt/nginx1-12 --with-http_ssl_module --with-http_stub_status_module
    ./configure表示当前目里下的configure文件;--prefix是configure脚本的一个参数,表示你要指定把nginx安装到哪里,所以后面的等号就是安装的位置,就是安装到/opt/nginx1-12,这是我们自己设定的一个路径;后面的--with表示我们要安装一些其他功能,比如其他第三方支持的一些功能,这里我们是指定安装其他两个模块,一个是http_ssl_module,就是让我们的nginx支持https的,如果我们不加这个参数,后期nginx是不支持https的。另一个是http_stub_status_module也是一个非默认安装的监控模块。这里我们就先配置这两个模块。
  • D:在执行configure安装脚本的时候,我们可以看到D行,表示它帮我们创建了一个名字为Makefile的编译文件。
  • E:make && make install 其中,make表示开始编译;&&表示结果递进的意思,就是make执行成功后再执行make install这条命令。后面的make install表示开始安装nginx了,并且安装到我们指定的C中的/opt/nginx1-12这个目录下。

至此我们就编译安装完毕了,make显示Leaving directory `/opt/ngx/nginx-1.12.0'就是编译动作结束离开这个文件夹了。注意这个过程中一定要检查不能出现error。下面这张图是我们缕一下前面的思路:

上图中nginx1-12文件夹里面sbin文件夹,就是nginx的启动命令,都放在这个目录下。

  • 启动nginx
    先到sbin目录,找到nginx的启动命令,操作如下:

用浏览器访问的效果如下: 

至此我们是正确安装并启动了nginx。

4、nginx配置文件讲解
上面我们安装并启动了nginx,用浏览器访问,就是一个welcome to nginx的首页,那这个首页文件放在哪里?我们是不是修改一下这个首页文件,改成我们想要的页面,就会显示我们想要的页面了。另外,如果我们从配置文件里面修改一下首页文件的路径,然后在新路径里面放入首页文件,是不是也可以变成我们想要的页面?当然是可以的!这两种思路异曲同工。

说明:配置文件就类似一个手机说明书,当手机刚出场,你需要更改一些参数。软件的配置文件也是一样的功能,你在这个文件里面更改不同的配置就显示不同的功能效果。

  • 思路一:首先我们先找到说明书,也就是配置文件的位置: 进入安装目录下,找到conf文件夹,进入conf文件夹,找到nginx.conf这个配置文件。这个文件就是我们的主配置文件。这个文件可以看作是一个入口。

 用vim打开这个主配置文件

这个配置文件就类似一个说明书,现在我们的目的是更改页面显示,所以我们只需要参考上面红框框住的部分即可
从这个说明书上,我们可以看到root的值是index,index的值是index.html 

 现在我们再看一下页面:

这种方式我们是不是也修改了前端显示页面!这种方法是:你先找到配置文件,就是/opt/nginx1-12/conf/nginx.conf这个文件,打开这个配置文件,看说明,它说前端显示的页面文件是放在./html下,名叫index.html的文件。然后你再去找./html/index.html文件,并在这个文件里面添加一句你自己想说的话,当然这句话要符合html语法,然后保存并关闭。我们再看浏览器,你说的话就显示在前端页面了。

  • 思路二:
    我们先在配置文件里面,也就是说明书里面,把首页文件的路径改一下,然后在新路径下放一个你想显示的页面文件即可:

这里我们把路径改成绝对路径,/opt/liyy/这个文件夹。然后保存关闭配置文件。
然后我们再在/opt/liyy里面放一个新的index.html文件即可

说明:当我们修改配置文件后,我们要需要再重启一下nginx,才能更新配置。但是从/opt/nginx1-12/sbin里面重启的时候,都会报错!此时你
一是先检查一下配置文件的语法对不对;
二是要先netstat -tunlp查看一下端口情况,你要先把nginx占用的进程杀死一下,然后才能重启。杀死的命令是:kill -9 进程序号。要确保与nginx相关的进程都结束了,才能重启。重启后再刷新页面就是正确的页面。

或者用/opt/nginx1-12/sbin/nginx -s reload命令更简单,也不用杀死进程就可以直接重启。 

5、多端口虚拟主机实现
假设我现在有两个网站,但是我也不想买硬件,我就想一台服务器运行两个网站。nginx支持同时处理多个网站,就是支持一个nginx服务支持多个窗口业务。默认的nginx服务是运行在80端口。如果我们修改nginx的配置文件,比如让它也支持81窗口,这样我们80窗口跑一个网站,81窗口跑另一个网站。
这个功能是nginx自己提供的,我们只需要修改它的配置文件即可。
步骤:进入安装目录-配置文件夹-nginx.conf主配置文件,并修改。 

在nginx.conf文件中,出现一个server{}区域配置,就表示一个网站,所以我们现在要自己再写一个server,就写在81端口吧: 

这样我们就在80和81两个端口提供2个网站的服务。

6、访问日志的配置
nginx能够记录用户的每一次访问请求。通过这个日志记录可以掌握服务器的动态信息,比如看看是否有ip每秒访问我1万次,那我的资源就全被这个ip占用了。就是检测用户行为,可以记录用户访问的时间、次数、频率等信息。
我们要配置访问日志,还是在配置文件/opt/nginx1-12/conf/nginx.conf里,把下图中标识的位置上的井号去掉即可

 但是我们不能这样操作,不然会报错,因为我们这个配置文件,我们后来又加了一个server,所以你如果如上图,就只在第一个server上打开这个功能,而第二个server没有,就会报错。因为这个配置文件的结构是:http{server1{} server2{}}这种层级关系,所以我们在server1前面把下面这几个井号去掉:

查看一下日志:
命令:tail -f /opt/nginx1-12/logs/access.log 表示持续的检测日志内容变化,就是tail -f命令。 

通过查看access.log文件内容我们看到网页的访问日志,我们可以通过sed awk grep的命令去进行日志分析。

7、nginx代理服务
前面提过,nginx还有强大的代理功能。
为什么说代理服务呢?前面不是讲过,nginx只处理静态数据,当客户端请求动态资源时,需要数据库需要php逻辑判断,这些nginx都做不到,它就得向别的应用服务转发请求,别的服务器把结果返回给nginx,nginx再返回给客户,所以就有了代理一说。具体如下图解释:

那按照这个思路,我把我的nginx配置上代理功能,代理某宝的页面,看能不能实现?
也是先修改配置文件,这里我们可以改80端口也可以改81端口,这里我们改81端口,就是把原来的路径改成某宝即可,修改如下: 

此时我们再浏览192.168.133.100:81,就是访问我自己的虚拟机,但是拿到了淘宝的首页。
意思就是本来我浏览器访问的是192.168.133.100:81是我自己虚拟机上的web服务,但是有了这个代理功能,我就可以通过我192.168.133.100:81访问淘宝的web服务器。 

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值