Nginx的使用总结(一)

Nginx的使用总结(一)

Nginx介绍
常见的WebServer
老牌:httpd(早期叫Apache),开源,市场份额最高
微软:IIS
轻量:Lighttpd,性能高,低耗能,功能欠缺

Nginx诞生
2004年10月发布,由俄国人Igor Sysoev开发

官网地址:http://nginx.org/ ,最新版本1.15.2

国内分支Tengine,http://tengine.taobao.org/

Nginx功能
http服务、反向代理、负载均衡、邮件代理、缓存加速、SSL、flv/mp4流媒体

  ①、反向代理

  这是 Nginx 服务器作为 WEB 服务器的主要功能之一,客户端向服务器发送请求时,会首先经过 Nginx 服务器,由服务器将请求分发到相应的 WEB 服务器。正向代理是代理客户端,而反向代理则是代理服务器,Nginx 在提供反向代理服务方面,通过使用正则表达式进行相关配置,采取不同的转发策略,配置相当灵活,而且在配置后端转发请求时,完全不用关心网络环境如何,可以指定任意的IP地址和端口号,或其他类型的连接、请求等。

  ②、负载均衡

  这也是 Nginx 最常用的功能之一,负载均衡,一方面是将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总返回给用户,这样可以大幅度提高网络系统的处理能力;另一方面将大量的前端并发请求或数据流量分担到多个后端网络节点分别处理,这样可以有效减少前端用户等待相应的时间。而 Nginx 负载均衡都是属于后一方面,主要是对大量前端访问或流量进行分流,已保证前端用户访问效率,并可以减少后端服务器处理压力。

  ③、Web 缓存

  在很多优秀的网站中,Nginx 可以作为前置缓存服务器,它被用于缓存前端请求,从而提高 Web服务器的性能。Nginx 会对用户已经访问过的内容在服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过 Nginx 服务器向后端发出请求。减轻网络拥堵,减小数据传输延时,提高用户访问速度。

CentOS6.8虚拟机的安装

第一步:安装 VMware

  官方网站:www.vmware.com

  下载百度云链接:http://pan.baidu.com/s/1bphDOWv 密码:0zix

VMware 是一个虚拟 PC 的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的 PC,以此来实现在一台机器上真正同时运行两个独立的操作系统。

安装过程全部默认下一步下一步就OK。

安装完成之后,打开 VMware,主页面显示如下:

下载 CentOS 镜像文件

百度云盘下载地址:http://pan.baidu.com/s/1mhGrdt2 密码:i5f1

 接下来我们就在 VMware 上安装 CentOS 

第 1 步:打开 VMware,点击创建新的虚拟机  

第 2 步:选择典型,点击下一步。出现如下界面,然后选择第三个选项:稍后安装操作系统,点击下一步

第 3 步:客户机安装操作系统选择 Linux,版本根据自己下载的 Linux 镜像文件来选择,这里我们选择 CentOS 64 位。然后点击 下一步

第 4 步:给虚拟机命名,以及选择虚拟机安装的位置,最好是非中文不含空格的地址。然后点击下一步

第 5 步:默认,磁盘大小 20 GB足够。然后点击下一步

第  6 步:点击完成按钮

那么就会在 VMware 主界面发现我们刚刚创建的 虚拟机 Node2

第 7 步:右键 虚拟机名称 Node2,选择设置

弹出如下界面:

第 8 步:

首先调整内存大小,一般来讲,内存最低不能小于 628 m,最大不能超过 真实物理机内存的 一半。我们可以默认选择 1024M内存大小就够了

其次我们可以对处理器进行调整,对硬盘大小也可以进行调整,但是这里我们都选择默认就行了,直接跳到 CD/DVD(IDE) 选项,选择 我们下载的 CentOS 镜像文件,然后点击确定

注意:我们这里下载的 CentOS 6.8 有两个ISO 文件,我们选择第一个,第一个包含 CentOS 系统的主体信息,而第二个 ISO 文件只是一些不常用的软件信息

第 9 步:到 VMware 主界面,选择 我们安装的 Node2 虚拟机,点击 开启此虚拟机

第 10 步:进入欢迎界面后,选择 第一个选项:Install or upgrade an existing system ,然后 Enter

其余几个选项意思是:

第 11 步:询问我们是否需要检查光盘,我们按 右箭头,选择 skip 选项(即不用检测),Enter

第 12 步:点击 next

第 13 步:选择 中文简体,点击 Next

第 14 步:键盘选择 美国英语式,然后点击下一步

第 15 步:选择 基本存储设备,点击下一步

第 16 步:选择第一个,是 忽略所有数据

第 17 步:给主机命名

第 18 步:选择时区,然后点击 下一步(注意:下面的系统时钟使用 UTC 时间 这个勾要去掉,我截图错了)

第 19 步:给根用户设置密码,然后点击 下一步。

注意:如果密码设置的过于简单,系统会弹出您的密码不够安全,但是你可以选择无论如何都使用,然后继续

第 20 步:选择进行哪种类型的安装,我们选择最后一个 创建自定义布局

第 21 步:给硬盘分区,如下界面,我们点击 创建

Linux 系统分区:

  必须分区:

  ①、根分区  /

  ②、交换分区 swap   (可以理解为虚拟内存,当内存不够时,可以临时使用 swap 分区,内存的两倍,不超过 2GB)

  推荐分区:

  ③、启动分区 boot  (保存系统启动时的数据,一般不用太大,200 M足够,防止根分区写满文件之后,系统起不来)

    ④、home 分区 ,保存用户的信息

选择标准分区,点击创建

第一步:创建 boot 分区,大小为 200 m

第二步:给 swap 分区,大小为 2000 M

第三步:给 home 分区,大小为 5000 M

第四步:给根目录分区,大小为剩余所用空间

 那么我们分区完成,点击 下一步:

第 22 步:格式化硬盘,选择格式化

第 23 步:选择将修改写入磁盘,点击下一步

第 24步:默认,点击下一步

第 25 步:选择安装类型,初学者如果想要图形化界面可以选择 前面两个,这里我们就选择 Basic Server (纯字符界面)点击下一步,然后等待安装完成

上面选项解释如下:

第 26 步:安装完成后,我们选择重新引导即可,输入用户名密码登录我们所安装的 Linux 系统

第 27 步:输入用户名、密码登录 Linux 系统

下载Nginx

  从Nginx的官网(http://nginx.org/en/download.html)下载Nginx的最新版本,这里我下载的是nginx-1.9.12。

  

  下载完成后,得到一个如下图所示的压缩包

  

Window安装

解压目录如下:

 下面对这个目录下的主要文件夹进行介绍:

  1、conf 目录:存放 Nginx 的主要配置文件,很多功能实现都是通过配置该目录下的 nginx.conf 文件,后面我们会详细介绍。

  2、docs 目录:存放 Nginx 服务器的主要文档资料,包括 Nginx 服务器的 LICENSE、OpenSSL 的 LICENSE 、PCRE 的 LICENSE 以及 zlib 的 LICENSE ,还包括本版本的 Nginx服务器升级的版本变更说明,以及 README 文档。

  3、html 目录:存放了两个后缀名为 .html 的静态网页文件,这两个文件与 Nginx 服务器的运行相关。

  4、logs 目录:存放 Nginx 服务器运行的日志文件。

  5、nginx.exe:启动 Nginx 服务器的exe文件,如果 conf 目录下的 nginx.conf 文件配置正确的话,通过该文件即可启动 Nginx 服务器。

  启动 nginx

  双击解压之后目录中的 nginx.exe 文件,出现一闪而过的画面,则启动成功。

  然后在浏览器中输入 http://localhost 或者 http://localhost:80 出现如下界面即启动成功。

  

  ps:该页面即是上面解压目录中 html 目录下的 index.html 文件。

       关闭 nginx

  进入到解压之后的目录,输入如下命令:

nginx.exe -s stop

  或者也可以打开任务管理器,找到 nginx 的进程,直接右键结束。

Linux安装

  上传nginx的tar包到Linux服务器上,如下图所示:

  

  

安装Nginx

安装前提

在安装Nginx前,需要确保系统安装了g++,gcc, openssl-devel、pcre-devel和zlib-devel软件。

安装必须软件:yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

      对于 gcc,因为安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境的话,需要安装gcc。

  对于 pcre,prce(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

  对于 zlib,zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

  对于 openssl,OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

编译安装

  首先将下载的 nginx-1.14.0.tar.gz 文件复制到 Linux 系统中,然后解压:

tar -zxvf nginx-1.14.0.tar.gz

  接着进入到解压之后的目录,进行编译安装。

./configure --prefix=/usr/local/nginx
 make
 make install

  注意:指定 /usr/local/nginx 为nginx 服务安装的目录。

安装过程如下图所示:

  

  

安装Nginx的依赖包:yum install GeoIP gd libXpm libxslt

安装过程如下图所示:

  

解压安装Nginx

进入Nginx的安装包的所在目录解压Nginx压缩包,如下图所示:

  

  

解压完成,多了一个nginx-1.9.12目录,进入nginx-1.9.12目录查看里面的内容,如下所示:

  

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)

  1.执行./configure

  

  

  ./configure命令执行成功

  2.执行make操作,如下图所示:

  

  

  make操作执行完成.

  3.执行make install命令进行安装.

验证安装Nginx是否成功

  1.查看nginx安装路径(whereis nginx)

  2.启动Nginx

进入到 /usr/local/nginx 目录,文件目录显示如下:

  

接着我们进入到 sbin 目录,通过如下命令启动 nginx:

./nginx

当然你也可以配置环境命令,这样在任意目录都能启动 nginx。

Linux 没有消息就好消息,不提示任何信息说明启动成功。

或者也可以输入如下命令,查看 nginx 是否有服务正在运行:

ps -ef | grep nginx

启动如下图所示:  

  在浏览器中输入http://centos服务器IP访问Nginx,如我的服务器IP地址是:115.159.95.35,输入http://115.159.95.35/访问安装好的Nginx,访问结果如下图所示:

  

  能够正常看到Nginx的欢迎页,就说明Nginx已经安装成功了。

关闭 nginx

  有两种方式:

  方式1:快速停止

 cd /usr/local/nginx/sbin
 ./nginx -s stop

  此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。不太友好。

  方式2:平缓停止

cd /usr/local/nginx/sbin
 ./nginx -s quit

  此方式是指允许 nginx 服务将当前正在处理的网络请求处理完成,但不在接收新的请求,之后关闭连接,停止工作。

重启 nginx

  方式1:先停止再启动

./nginx -s quit
./nginx

 相当于先执行停止命令再执行启动命令。

  方式2:重新加载配置文件

./nginx -s reload

通常我们使用nginx修改最多的便是其配置文件 nginx.conf。修改之后想要让配置文件生效而不用重启 nginx,便可以使用此命令。

  

检测配置文件语法是否正确

  方式1:通过如下命令,指定需要检查的配置文件

nginx -t -c  /usr/local/nginx/conf/nginx.conf

  方式2:通过如下命令,不加 -c 参数,默认检测nginx.conf 配置文件。

nginx -t 

正向代理与反向代理的区别

一、正向代理的概念

  正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。

  结论:正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

二、反向代理的概念

  举例:用户想访问:"http://ooxx.me/readme",但ooxx.me上并不存在readme页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户,但用户并不知情,这很正常,用户一般都很笨。这里所提到的ooxx.me 这个域名对应的服务器就设置了反向代理功能。

  结论:反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

三、正向代理和反向代理的区别

  从用途上来讲:正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

  从安全性来讲:正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。

  打个比方,a,b,c三个人,正向代理是a通过b向C借钱,a知道c的存在 。反向代理是a向b借钱,b又向C借,a不知道c的存在。

反向代理服务器的工作原理

概述

  反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

      通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送 到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

反向代理服务器的工作原理

      反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。

1、作内容服务器的替身                

        如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。

       当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。

       这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访 问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。

  2、作为内容服务器的负载均衡器

       可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。

      对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。

      可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期 间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。

自定义脚本来管理nginx服务

yum安装

yum install -y epel-release             //安装扩展源
yum install -y nginx

除了上面之外,还可以自定义源,这样的话安装nginx的版本比上面更新

vim /etc/yum.repos.d/nginx.repo           //写入下面内容
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=0 
enabled=1
yum install -y nginx             //如果有epel源则先要禁用,否则冲突

启动nginx

systemctl start nginx

关闭nginx

systemctl stop nginx

重启nginx

systemctl restart nginx

查看nginx进程

ps aux |grep nginx
或
netstat -lntp           //80端口

也可以浏览器访问机器的IP或者直接curl

如果有防火墙,可以放行80端口

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

查看nginx版本以及各个目录参数

nginx -V            //V大写

下载源码包

wget http://nginx.org/download/nginx-1.14.0.tar.gz

解压

tar zxf nginx-1.14.0.tar.gz

初始化

cd nginx-1.14.0; ./configure --prefix=/usr/local/nginx       //如果有报错,yum安装pcre-devel和zlib-devel

安装

make && make install

启动nginx

/usr/local/nginx/sbin/nginx

关闭nginx

pkill nginx              //杀死nginx进程

检测配置文件语法错误

/usr/local/nginx/sbin/nginx -t

重载配置

/usr/local/nginx/sbin/nginx -s reload

上面启动略为麻烦,所以我们可以自定义脚本来管理nginx服务

vim /etc/init.d/nginx               //写入下面内容
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"

start() 
{
    echo -n $"Starting $prog: "
    mkdir -p /dev/shm/nginx_temp
    daemon $NGINX_SBIN -c $NGINX_CONF
    RETVAL=$?
    echo
    return $RETVAL
}

stop() 
{
    echo -n $"Stopping $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -TERM
    rm -rf /dev/shm/nginx_temp
    RETVAL=$?
    echo
    return $RETVAL
}

reload()
{
    echo -n $"Reloading $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -HUP
    RETVAL=$?
    echo
    return $RETVAL
}

restart()
{
    stop
    start
}

configtest()
{
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac

exit $RETVAL

启动nginx

chmod 755 /etc/init.d/nginx             //更改权限
/etc/init.d/nginx start              //启动nginx

关闭nginx

/etc/init.d/nginx stop

重启nginx

/etc/init.d/nginx restart

使nginx开机启动

chkconfig --add nginx            //适用于CentOS 6
chkconfig nginx on            //适用于CentOS 6

或者

systemctl enable nginx           //适用于CentOS 7
发布了370 篇原创文章 · 获赞 88 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/100091749
今日推荐