作为一个后端开发人员以前没怎么在意nginx,只知道有这么一个东西,用的时候呢也是百度一下,今天突然间觉得想真正的掌握这个工具,所以今天开始深入的去学习一下这个工具,这个是我的学习笔记,或有错误,望海涵。
1、Nginx是什么?
我第一次听说nginx是听到别人说什么反向代理,负载均衡。当时是觉得这个东西好高大上啊,听都没听说过,现在看来还是年轻了。最不喜欢IT非要搞那么多专业术语,把简单的事情复杂化,什么IOC,DI,正向代理,反向代理,这样模式那样模式。简单来说Nginx就是分发客户端对服务端的请求(这是其中的核心功能,当然还有其他的)。所谓正向代理和反向代理中间都有一个组件,区别就是,正向代理是将多个客户端的请求都搞成一个去请求(参考局域网访问外网),反向代理就是多个服务端包成一个向外提供服务。so easy?!是的简单来说就是这样,当然了,简单的东西也可以慢慢积累变成复杂,乐高就是这样,你只要有想法有毅力你可以造一辆车都可以。
官方解释nginx
nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。下面就是他的主要功能介绍,主要就是分成HTTP和IMAP/POP3,都是基于TCP/IP协议的应用层(最近也在学习【复习O(∩_∩)O】基础的网络知识)。
__HTTP基础功能:__
- 处理静态文件,索引文件以及自动索引;
- 反向代理加速(无缓存),简单的负载均衡和容错;
- FastCGI,简单的负载均衡和容错;
- 模块化的结构。过滤器包括gzipping, byte ranges, chunked responses, 以及 SSI-filter 。在SSI过滤器中,到同一个 proxy 或者 FastCGI 的多个子请求并发处理;
- SSL 和 TLS SNI 支持;
__IMAP/POP3 代理服务功能:__
- 使用外部 HTTP 认证服务器重定向用户到 IMAP/POP3 后端;
- 使用外部 HTTP 认证服务器认证用户后连接重定向到内部的 SMTP 后端;
- 认证方法:
- POP3: POP3 USER/PASS, APOP, AUTH LOGIN PLAIN CRAM-MD5;
- IMAP: IMAP LOGIN;
- SMTP: AUTH LOGIN PLAIN CRAM-MD5;
- SSL 支持;
- 在 IMAP 和 POP3 模式下的 STARTTLS 和 STLS 支持;
下面这个图就是他基本的作用展示
2、Nginx 是优越的特性:
- 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.
- 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
- 作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
- Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。
我个人觉得的一个坑--几乎可以做到7*24不间断运行,这尼玛是说出了问题自己负责的意思吗?不过这些小的问题都不是问题,哪个服务器一年还不上几个需求重启几次的?如果几年都不重启的,不上新需求的单位,请联系我,你们那里还差人吗。
3、Nginx的下载与安装
官网下载地址:http://nginx.org/en/download.html,下东西一定去官网,不要直接百度,有些程序是可以植入病毒木马的,到时候你的服务遭了,你都不晓得怎么回事,所以宁愿多花点时间也不要图方便随便去下载。
安装必要的组件
正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好。
ububtu平台编译环境可以使用以下指令
apt-get install build-essential apt-get install libtool
安装make:centos平台编译环境使用如下指令
yum -y install gcc automake autoconf libtool make
安装gc++
yum install gcc gcc-c++
一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。
1.选定源码目录
可以是任何目录,本文选定的是/usr/local/srccd /usr/local/src
2.安装PCRE库
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:cd /usr/local/src wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz tar -zxvf pcre-8.37.tar.gz cd pcre-8.34 ./configure make make install
3.安装zlib库
http://zlib.net/zlib-1.2.8.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:cd /usr/local/src wget http://zlib.net/zlib-1.2.8.tar.gz tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure make make install
4.安装ssl(某些vps默认没装ssl)
cd /usr/local/src wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz tar -zxvf openssl-1.0.1t.tar.gz
Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:
5.安装nginx
cd /usr/local/src wget http://nginx.org/download/nginx-1.4.2.tar.gz tar -zxvf nginx-1.4.2.tar.gz cd nginx-1.4.2 ./configure --sbin-path=/usr/local/nginx/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --pid-path=/usr/local/nginx/nginx.pid \ --with-http_ssl_module \ --with-pcre=/opt/app/openet/oetal1/chenhe/pcre-8.37 \ --with-zlib=/opt/app/openet/oetal1/chenhe/zlib-1.2.8 \ --with-openssl=/opt/app/openet/oetal1/chenhe/openssl-1.0.1t make make install
安装成功后 /usr/local/nginx 目录下如下--with-pcre=/usr/src/pcre-8.34 指的是pcre-8.34 的源码路径。
--with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。fastcgi.conf koi-win nginx.conf.default fastcgi.conf.default logs scgi_params fastcgi_params mime.types scgi_params.default fastcgi_params.default mime.types.default uwsgi_params html nginx uwsgi_params.default koi-utf nginx.conf win-utf
6.启动确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/nginx 命令来启动 Nginx,
netstat -ano|grep 80
如果查不到结果后执行,有结果则忽略此步骤(ubuntu下必须用sudo启动,不然只能在前台运行)
sudo /usr/local/nginx/nginx
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
-----------------------------------------------------
到这里nginx就安装完成了,如果只是处理静态html就不用继续安装了如果你需要处理php脚本的话,还需要安装php-fpm。
这样我们就在我们的服务器上安装好了Nginx了,后续就来讲下如何来使用。