分布式专题(3)- Nginx

本篇一句话总结:Nginx是一款轻量级的Web 服务器,也可以用做反向代理、负载均衡、动静分离和 HTTP缓存。


正文开始:

  • 什么是Nginx?
  • 为什么选择Nginx?
  • 怎么用Nginx?

      上面这几个问题,是每个刚接触 Nginx 的人都想知道的。下面小兵综合自己的理解和使用情况,在分布式专题里总结一篇关于 Nginx 的内容。全文看完,我们对 Nginx 也有一定的了解了。

 

什么是Nginx?

总结一句话,就是:

Nginx是一款轻量级的Web 服务器,也可以用做反向代理、负载均衡、动静分离和 HTTP缓存。

从这句话我们可以知道Nginx的基本定位是Web服务器,然后Nginx还提供反向代理、负载均衡、动静分离、HTTP缓存的功能。

 

什么是Web服务器?

Web服务器是指驻留于因特网上某种类型计算机的程序,是可以向发出请求的浏览器提供文档的程序。当Web浏览器(客户端)连到Web服务器上并发送请求时,Web服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。Web服务器使用HTPP协议与客户机浏览器进行信息交流,这就是人们常把它们称为HTTP服务器的原因。Nginx最基本的功能便是作为Web服务器。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。常用的还有Tomcat、WebLogic、JBoss、Jetty、Netty等。下面简单介绍下几个主流开源的Web服务器:

  • Apache是目前市场占用量最高的web服务器,据最新数据统计,市场占有率目前是50%左右。主要优势在于一个是比较早出现的一个Http静态资源服务器,可以作为Web服务器使用,用于处理静态网页,比如HTML、图片、视频、音频等静态文件,Apache稳定性良好,支持的模块丰富。但是其不适宜高并发的请求。
  • Nginx是俄罗斯人编写的一款高性能的HTTP和反向代理服务器,在高连接并发的情况下,它能够支持高达50000个并发连接数的响应,但是内存、CPU等系统资源消耗却很低,运行很稳定。目前Nginx在国内很多大型企业都有应用,据最新统计,Nginx的市场占有率已经到33%左右了。虽然Apache的市场占有率虽然仍然是最高的,但是是呈下降趋势。而Nginx的势头很明显。在Nginx的基础上,淘宝还搞出了一个Web服务器Tengine。相信大公司的眼光是不会差的。
  • Tomcat是Apache的拓展,更实质的说是Java应用服务器。它主要用于解析servlet/JSP,能够动态地生成资源,同时具备HTTP服务。Tomcat根据请求将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端,对静态页的支持效率就没有Apache高。单纯的Tomcat性能有限,在很多地方表现有欠缺,如活动连接支持、静态内容、大文件和HTTPS等。因此大多数公司都是Tomcat配合Apache或者Nginx一起使用。

为什么选择Nginx?

选择Nginx的理由也很简单:

  • 第一,它可以支持每秒5W高并发连接;
  • 第二,内存消耗少;
  • 第三,成本低,如果采用F5、NetScaler等硬件负载均衡设备的话,需要大几十万。而Nginx是开源的,可以免费使用并且能用于商业用途

下面,我们先把Nginx下载回来,结合实例,一起来认识和理解“Nginx是一款轻量级的Web 服务器,也可以用做反向代理、负载均衡、动静分离和 HTTP缓存。”的含义。

 

Nginx安装

(为写本篇博客小兵准备了两台CentOS 7.x服务器,139.155.105.15用于安装nginx,47.112.148.36用于部署tomcat应用。)

一、安装编译工具及库文件

yum -y install make gcc gcc-c++ libtool zlib zlib-devel openssl openssl-devel

二、安装 PCRE

2.1 下载pcre,下载完成后解压:

[root@VM_0_10_centos ~]# cd /usr/local/src/
[root@VM_0_10_centos src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@VM_0_10_centos src]# tar zxvf pcre-8.35.tar.gz

2.2 解压后进入目录并编译安装:

[root@VM_0_10_centos src]# cd pcre-8.35/
[root@VM_0_10_centos pcre-8.35]# ./configure
[root@VM_0_10_centos pcre-8.35]# make && make install

2.3 查看pcre版本,出现版本号即安装pcre成功

[root@VM_0_10_centos pcre-8.35]# pcre-config --version
8.35

三、安装 Nginx

3.1 下载nginx,下载完成后解压:

[root@VM_0_10_centos ~]# cd /usr/local/src/
[root@VM_0_10_centos src]# wget http://nginx.org/download/nginx-1.6.2.tar.gz
[root@VM_0_10_centos src]# tar zxvf nginx-1.6.2.tar.gz

3.2 解压后进入目录并编译安装:

[root@VM_0_10_centos src]# cd nginx-1.6.2/
[root@VM_0_10_centos nginx-1.6.2]# ./configure
[root@VM_0_10_centos nginx-1.6.2]# make && make install

2.3 查看nginx版本,出现版本号即安装nginx成功。(默认安装在/usr/local/nginx)

[root@VM_0_10_centos nginx-1.6.2]# cd /usr/local/nginx/sbin/
[root@VM_0_10_centos sbin]# ./nginx -v
nginx version: nginx/1.6.2

2.4 启动并访问

[root@VM_0_10_centos sbin]# ./nginx

nginx默认监听的是80端口,所以在客户端(浏览器)输入服务器ip即可访问nginx。

Nginx默认首页

nginx相关命令:
/usr/local/nginx/sbin/nginx -t         # 检查配置文件语法
/usr/local/nginx/sbin/nginx -c            #指定nginx.conf的文件。不指定时默认为NGINX_HOME/conf/nginx.conf
/usr/local/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/nginx/sbin/nginx -s reopen            # 重启 Nginx
/usr/local/nginx/sbin/nginx -s stop              # 停止 Nginx

 

Nginx配置文件

我们说“Nginx是一款轻量级的Web 服务器,也可以用做反向代理、负载均衡、动静分离和 HTTP缓存”。Nginx能提供这些功能,都是通过配置nginx.conf文件来实现,所以这个配置文件的重要性可想而知。我们查看 conf/nginx.conf 文件,去除注释后得默认配置如下。可以看到nginx的核心配置可以是很简洁的,最主要包括三个模块:main、 events 、 http。每个模块都可以根据自己的需要进行相应的配置,我们也可以添加自己的模块。本篇对配置文件不做过多介绍,可参考常用nginx.conf配置文件解析nginx配置参数详细说明

# 一、主模块配置
# nginx要开启的工作进程数。Nginx有一个主线程和一个或多个工作线程。
worker_processes  1;

# 二、事件模块配置
events {
    # 单个worker进程打开的最大并发连接数
    worker_connections  1024;
}

# 三、http模块配置
http {
    # include指在当前文件中包含另一个文件内容
    include       mime.types;
    # 设置文件使用默认的mine-type,默认是未知的类型
    default_type  application/octet-stream;

    # 优化磁盘IO设置,指定nginx是否调用sendfile函数来输出文件,普通应用设为on,下载等磁盘IO高的应用,可设为off
    sendfile        on;
    
    # 长连接的超时时长
    keepalive_timeout  65;

    # 虚拟主机
    server {
        # 监听80端口
        listen       80;
        # 定义主机名,主机名可以有多个,名称还可以使用正则表达式(~)或通配符
        server_name  localhost;

        # 根据用户请求的URI来匹配定义的某个location,匹配到时,此请求将被相应的location配置块中的配置所处理
        location / {
            # 定义服务器的默认网站根目录位置
            root   html;
            # 定义首页索引文件的名称
            index  index.html index.htm;
        }

        # 定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

 

Nginx用做Web服务器

Nginx默认就是当作Web服务器来使用,我们能访问到Nginx的默认首页,就是Nginx作为Web服务器给浏览器响应返回了配置文件 nginx.conf 中配置的 html目录下的index.html 文件。

Nginx默认首页
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值