Linux上Nginx的安装及使用(在线及离线安装)

一、相关概念

①nginx介绍

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,中国大陆使用nginx网站用户有:百度、新浪、网易、腾讯等。

优点:

1:可运行linux,并有 Windows 移植版。

2:在高连接并发的情况下,Nginx是Apache服务器不错的替代品Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应

②正向代理与反向代理

代理服务器是客户端和原始服务器之间的一个中间服务器,为了从原始服务器获取内容,客户端发送请求到代理服务器,然后代理服务器从原始服务器中获取内容返回给客户端。代理服务器通常分为两类,即转发代理(forward proxy)服务器和反向代理(reverse proxy)服务器。转发代理服务器又通常简称为正向代理服务器,我们常提到的代理服务器就指的是转发代理服务器。

正向代理服务器在被使用时,客户端必须专门地配置转发代理来访问其他站点,如在浏览器中配置代理服务器地址及端口号等。

正向代理一个典型应用就是为处于防火墙后的内部客户端提供访问外部Internet网,比如校园网用户通过代理访问国外网站,公司内网用户通过公司的统一代理访问外部Internet网站等。转发代理服务器也能够使用缓存来缓解原始服务器负载,提供响应速度。

反向代理则相反,在客户端看来它就像一个普通的web服务器,客户端不需要进行任何配置,客户端发送普通的请求来获取反向代理所属空间的内容。反向代理决定将这些请求发往何处,然后就好像它本身就是原始服务器一样将请求内容返回。这些都是在反向代理服务器内部完成的,代理服务器之转发,不做任何处理。

反向代理的一个典型应用就是打通外部Internet和公司内网,比如通过外网访问部署在内网服务器上的项目,反向代理还能够用于为多个后端服务器提供负载均衡,或者为较慢的服务器提供缓存。此外,反向代理还能够单纯的将多个服务器映射到同一个URL,通过一个地址进行访问。

两者区别

两者的相同点在于都是用户和服务器之间的中介,完成用户请求和结果的转发。主要的不同在于:

1.正向代理的内部是客户端,架设在客户端和目标主机之间。而反向代理的内部是服务器,架设在服务器端。即内网的客户端通过正向代理问外部网络,而外部的用户通过反向代理访问内部的服务器。

2.正向代理通常接受客户端发送的任何请求,而反向代理通常只接受到指定服务器的请求。如校园网内部用户可以通过正向代理访问国外的任何站点(如果不加限制的话),而只有特定的请求才发往反向代理,然后由反向代理发往内部服务器。

③负载均衡

由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。

针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。

二、安装所需环境

①gcc环境

Nginx是C语言开发,nginx安装前需具备gcc g++环境在安装时进行编译。可通过下面命令查看是否有这三个包

rpm -qa | grep gcc

若没有安装,可通过如下方式在线安装

yum install gcc

yum install gcc-c++

或 yum install gcc gcc-c++

由于我的环境为内网主机,所以无法在线安装,故采用了rpm包的方法进行离线安装,linux版本不同对应的包也不同,可使用如下命令查看自己的linux版本 

unmae -a

cat /etc/issue 

cat /etc/redhat-release  //红帽系统使用此命令

然后可以根据自己的linux版本去查询所需要的包,或者找一台可以在线安装gcc的主机,通过yum安装然后看依赖包的打印记录,还可以去官网下载ISO镜像,解压后在packages中查看rpm包。

我的linux为redHat 7.2,所需要的包如下

RMP包可在http://vault.centos.org/找到对应的版本进行下载,有些包在这个网站中没有,可以去http://rpm.pbone.net/进行下载。

将这些包通过FTP方式传到对应的主机,然后执行如下命令进行安装

rpm -Uvh *.rpm --nodeps --force

安装完成后可通过如下命令检测是否安装成功

gcc -v

g++ -v

②PCRE安装

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

可通过yum直接在线安装

yum install -y pcre pcre-devel

也可通过wget在线下载tar.gz压缩包安装  建议用此种方式

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz

离线方式可在互联网环境进入上面的地址下载好后FTP到主机安装,压缩包安装方式如下

tar -zxvf pcre-8.42.tar.gz

cd pcre-8.42

./configure

make

make install

上述三步可直接写为./configure && make && make install

③OpenSSL安装(非必须 用到HTTPS协议需安装)

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

可通过yum直接在线安装

yum install -y openssl openssl-devel

也可通过wget在线下载tar.gz压缩包安装  建议用此种方式

wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz

离线方式可在互联网环境进入上面的地址下载好后FTP到主机安装,压缩包安装方式如下

tar zxvf openssl-1.1.0c.tar.gz

cd openssl-1.1.0

./config

make

make install

在./config配置时,如果你的环境中没有安装perl,会提示需要安装Perl 5

可通过wget在线下载tar.gz压缩包安装  建议用此种方式

wget http://www.cpan.org/src/5.0/perl-5.24.0.tar.gz

离线方式可在互联网环境进入上面的地址下载好后FTP到主机安装,压缩包安装方式如下

tar -xzf perl-5.24.0.tar.gz

cd perl-5.24.0

./Configure -des -Dprefix=$HOME/localperl

make

make test

make install

安装完成后可通过perl -version命令查看perl的版本

安装成功后再次安装OpenSSL即可

④安装zlib

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip

可通过yum直接在线安装

yum install -y zlib zlib-devel

也可通过wget在线下载tar.gz压缩包安装  建议用此种方式

wget http://zlib.net/zlib-1.2.11.tar.gz

离线方式可在互联网环境进入上面的地址下载好后FTP到主机安装,压缩包安装方式如下

tar -zxvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure && make && make install

二、Nginx安装及使用

①nginx安装

可在nginx官网http://nginx.org/download/查看最新版本

之后通过wget在线下载tar.gz压缩包安装

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

离线方式可在互联网环境进入上面的地址下载好后FTP到主机安装,压缩包安装方式如下

tar -zxvf nginx-1.12.2.tar.gz

cd nginx-1.12.2

./configure && make && make install

②nginx使用

常用命令

/usr/local/nginx/sbin/nginx -h                                                         命令帮助

/usr/local/nginx/sbin/nginx                                                             启动nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf      配置文件方式启动

/usr/local/nginx/sbin/nginx -s stop (quit)                                       停止nginx

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

/usr/local/nginx/sbin/nginx -t                                                         验证配置文件(检测是否安装成功)

ps -ef | grep nginx                                                                         查看nginx进程

netstat -tunlp                                                                                 查看端口占用

netstat -tunlp |grep                                                                        查看指定端口

kill -QUIT Nginx主进程号                                                               停止进程

kill -TERM Nginx主进程号                                                              快速停止

kill -9 nginx                                                                                     强制停止

kill -HUP Nginx主进程号                                                                平滑重启

nginx的配置文件为安装目录下的nginx目录中的nginx.conf,默认端口为80,启动后出现如下页面即为启动成功

③nginx反向代理

nginx反向代理有两种配置方式,一种为直接在location的proxy_pass属性中指定跳转地址,另一种为指定upstream(upstream模块是命名一个后端服务器组),在proxy_pass处写上upstream名称即可

④nginx负载均衡

nginx负载均衡策略

(1)轮询:轮流处理请求,每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器宕掉,自动剔除,剩下的继续轮询。

upstream myServer {    

    server 192.168.1.1:9090 down;   //down表示此节点不参与负载

    server 192.168.1.1:6060  fail_timeout=10s max_fails=2;  //10S内连接失败2次就认为这个服务器工作不正常

    server 192.168.1.1:7070 backup;   //当其他所有的非backup机器宕机时,才会请求backup机器

}  

 

down

表示服务器永久停机,不参与负载

bakcup

表示服务器为备用服务器,当其他服务器全部停机时,请求才会发送到这里

fail_time

服务器会被认为停机的时长,默认为10s

max_fails

允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

fail_timeout

fail_timeout与max_fails要关联使用,一台服务器在fail_timeout内出现了max_fails次失败,则认为这台服务器已经挂掉,然后在fail_timeout时间后会尝试重新连接。

nginx负载均衡的默认策略为轮询方式,在轮询中,如果服务器donw了,会自动剔除该服务器。

(2)权重:通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。

upstream myServer {

    server localhost:8080   weight=2; 

    server localhost:8082   backup;  

    server localhost:8083   max_fails=3 fail_timeout=20s; 

}

权重方式可以与ip_hash和 least_conn结合使用。

(3)IP地址哈希(ip_hash):每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。

upstream myServer {

    ip_hash;  

    server localhost:8080   weight=2;  

    server localhost:8081;

}

(4)最少连接(least_conn):web请求会被转发到连接数较少的服务器上,适合请求处理时间长短不一造成服务器过载的情况

upstream myServer {

    least_conn;   

    server localhost:8080   weight=2;  

    server localhost:8081;

    server localhost:8082 backup;

    server localhost:8083   max_fails=3 fail_timeout=20s;  

}

(5)最短响应时间(fair):按照服务器端的响应时间来分配请求,响应时间短的优先分配。

upstream myServer {

    server localhost:8080;

    server localhost:8081;

    server localhost:8082;

    server localhost:8083;

    fair;

}

(6)URL地址哈希(url_hash):按访问的url进行分配,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,造成不必要的多次下载。使用url_hash后同一url每次到达一台服务器,可以缓存资源,不会造成多次下载。

upstream myServer {

    hash $request_uri;   

    server localhost:8080;  

    server localhost:8081;  

    server localhost:8082;  

    server localhost:8083;  

}

【注】

Nginx proxy_pass后的url加不加/的区别

在nginx中配置proxy_pass时,若url中端口号后无内容,当在后面的url加上了/相当于是绝对根路径。则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。若端口号后有内容,则无论后面是否有/,都不会把location中匹配的路径部分代理走。

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值