初识Nginx
Nginx(engine x)是一个高性能的HTTP和反向代理Web服务器,同时也提供了IMAP/POP3/SMTP服务。
博主以前在面试的时候,简历上写了熟悉Nginx。实际上,也就简单的安装了一下,然后启动了服务,访问了默认提供的index.html,然后就在简历上写了Nginx这几个字。这就像你告诉面试官,你会各种语言的“hello world”一样。面试的结果,可想而知,被技术官怼的哑口无言。
从那以后,我意识到,写简历要慎重。更加意识到,技术广度和深度的重要性。所以,决定从哪跌倒就从哪爬起来。开始上手Nginx。刚好我司最近的项目会用到它。决定一步一步把它征服。
优点和适用场景
在软件开发中要使用一种技术,一定是因为它的某种优点或者适应场景与你的项目所匹配。同样,Nginx也是如此,具有很多优点。
相信,在平时开发中,大家用的最多的服务器,就是那只“猫”了吧!没错,这里说的就是Apache。为什么这么多人用它呢?就是因为它有着“稳定、开源、跨平台”等优点。但是呢,这只猫咪也是有缺点的,而最致命的缺点就是:“不支持高并发”,当访问量过大的时候,服务器会消耗大量资源,导致响应速度急剧下降。那个时候,你肯定会有摔电脑的冲动。
在这时,Nginx就出现了,一款高性能的Web服务器。
一、Nginx的优点
- 高并发、高性能。
- 可扩展性好。
- 内存消耗少,节省带宽。(支持Gzip压缩)
- 具有高可靠性。
- 支持热部署(在不停止服务的情况下,进行版本升级)
- BSD许可证(也就是所谓的开源)
二、适用场景
- 静态资源服务
- 反向代理服务
- API服务(OpenResty:基于Nginx与Lua的高性能Web平台,支持Rest风格)
三、组成
说完了优点和适用场景,最后说说Nginx的组成。
- Nginx二进制可执行文件(由各个模块源码编译出的一个文件)
- Nginx.conf配置文件(控制Nginx的行为)
- access.log访问日志(记录每一条http请求信息)
- error.log错误日志(用来定位问题)
安装编译Nginx
上面对Nginx进行了简单的介绍。下面就是实战了。安装和编译Nginx。
一、安装编译工具
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
zlib库:主要对http包的内容做gzip格式的压缩。
openssl:主要是为了服务器能够支持安全的SSL协议,支持https。
gcc-c++:因为Nginx是用C语言开发的,所以,安装这个,主要用来编译C和C++文件。
libtool:一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中。可以在不同平台上创建并调用动态库。
二、安装pcre库
pcre库支持正则表达式,Nginx的http模块需要它来解析正则表达式。另外它最重要的作用是让Nginx支持Rewrite功能。
下载pcre安装包:wget https://sourceforge.net/projects/pcre/files/pcre2/10.33/pcre2-10.33.tar.gz
下载完成,就是解压安装,然后编译了。
tar -zxvf pcre2-10.33.tar.gz -C /usr/local/software/pcre
解压到自己定义的文件夹下即可。然后进入此文件夹。
./configure
make && make install
pcre-config --version # 查看版本
基本上就安装完了。如果安装过程遇到问题,可以参考下面的文章。
https://blog.csdn.net/eddy23513/article/details/81366751
三、安装Nginx
绕了这么大一圈,终于到了正题。说一个题外话,我本人用的是阿里云的服务器,所以没有经过上面的几个步骤。刚在服务器上看了一下,果然已经有相应的库。以前使用本地的Linux安装Nginx时会安装上面所需要的库。
好了,回归正题。首先去官网下载Nginx安装包。
①、安装包下载及目录分析
Nginx官网:http://nginx.org/
右边有一个download,点击就可以看到下面的界面。
矩形框圈出来的就是Nginx的版本。
- Mainline version:最新的版本。
- Stable version:旧的版本。
这里随自己喜好下载即可。下载完成,传到Linux上,进行解压。推荐使用Linux系统。因为Linux的性能始终高于Windows系统。
cd Nginx的目录
tar -zxvf nginx-1.16.0.tar.gz -C /usr/local/software/nginx
解压完成,查看解压之后的Nginx目录。
1. auto:主要用于编译,判定支持的模块和操作系统。 2. CHANGE:Nginx提供了哪些特性(Feature表示更新的;Bugfix表示修复的BUG;Change表示哪些发生了变化)。 3. CHANGE.ru:表示其他语言的支持。 4. conf:一个实例文件夹。 5. configure:编译前,执行的必备动作。 6. contrib:提供了vim工具,将文件拷贝到自己的目录(然后文件就能高亮显示)。 7. html:提供了500的页面和index的页面。 8. man:Linux对Nginx提供的一个帮助文件。 9. src:Nginx的源代码。
上面提到了contrib这个文件夹,下面的文件可以让使用vim nginx.conf这个命令时,内容高亮显示。
具体方法就是:
mkdir ~/.vim
cp -r contrib/vim/* ~/.vim/
完成上面的命令,再次查看nginx.conf,就可以看到以前没有高亮显示的内容,会有高亮的效果了。
②、编译
接下来就到了关键的时候了,使用下面的命令编译解压后的Nginx。
./configure --prefix=/usr/local/package_config/nginx
# /usr/local/package_config/nginx 这个路径根据自己的情况自定义即可。
编译完之后,如果一切正常,就会看到下面的界面。
最后使用下面的命令完成操作。
make
make install # 首次安装可以使用这个命令
所有的安装编译步骤都完了,就可以启动Nginx服务了。
③、启动Nginx
首先进入编译之后的Nginx目录,使用下面的命令:
cd Nginx目录
./sbin/nginx # 启动Nginx
./sbin/nginx -s reload # 重新载入配置文件
./sbin/nginx -s reopen # 重启 Nginx
./sbin/nginx -s stop # 停止 Nginx
ps -ef|grep nginx # 查看Nginx进程状态
直接访问:虚拟机IP或者使用Linux命令curl ‘http://127.0.0.1’,即可看到如下界面,因为Nginx默认开启80端口。
编程的初衷是什么?