Nginx

一、Nginx的介绍和安装

(一)Nginx的概述

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD—like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

(二)Nginx的应用场景

1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器

2、虚拟主机。可以实现在一个服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用Nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器限制的情况。

(三)Linux下的Nginx的安装

1、检索当前环境是否安装了Nginx

ps aux | grep nginx

2、安装Nginx

(1) 下载Nginx

官网地址:http://nginx.org/en/download.html 

(2)将下载的nginx-1.8.0.tar.gz上传到linux操作系统

(3)nginx进行解压缩到/usr/local
tar zxf nginx-1.8.0.tar.gz -C /usr/local
(4)安装nginx需要先将官网下载的源码进行编译,需要安装gcc
yum install gcc-c++
(5)linux上安装pcre
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
(6)需要在linux上安装zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
(7)需要在linux安装openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
(8)进入nginx-1.8.0目录,使用configure命令进行按装
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
(9)编译安装
先使用 make 进行编译,然后使用 make install 再进行按装。
make
make install

3、启动Nginx

进入nginx装好的nginx目录下的sbin目录下键入 ./nginx进行启动

4、访问测试

在浏览器键入:http://192.168.18.200

二、Nginx实现负载均衡

(一)负载均衡介绍

1、什么是负载均衡

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负载均衡构建在原有网络 结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

2、负载均衡设计思想

一台普通服务器的处理能力是有限的,假如能达到每秒几万个到几十万个请求,但却无法在一秒钟内处理上百万个甚至更多的请求。但若能将多台这样的服务器组成一个系统,并通过软件技术将所有请求平均分配给所有服务器,那么这个系统就完全拥有每秒钟处理几百万个甚至更多请求的能力。这就是负载均衡最初的基本设计思想。

负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求按照某种策略分配到服务器集合的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡解决了大量并发访问服务问题,其目的就是用最少的投资获得接近于大型主机的性能。

3、负载均衡的分类

(1)集中式

即在服务的提供方和消费方之间使用独立的LB设施,如Nginx(反向代理服务器),由该设施负责把访问请求通过某种策略转发至服务的提供方!

(2)进程式

将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选出一个合适的服务器Ribbon 就属于进程式LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址!

(二)正向代理

Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

  • 简单一点:通过代理服务器来访问服务器的过程 就叫 正向代理。
  • 需要在客户端配置代理服务器进行指定网站访问

(三)反向代理

  • 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
  • 我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。

(四)负载均衡环境搭建

1、安装配置第一个tomcat

(1)上传jdk-8u161-linux-x64.tar.gz到/usr/local目录下

(2)对jdk-8u161-linux-x64.tar.gz进行解压缩

tar -zxf jdk-8u161-linux-x64.tar.gz

(3)编辑/etc/profile进行环境变量设置

#JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin

(4)重新进profile进行加载

source /etc/profile

(5)解压apache-tomcat-9.0.21.tar.gz并改名为tomcat1

source /etc/profile

(6)修改tomcat的webapps/ROOT/index.jsp 标题为8081

(7)修改tomcat1的端口

2、安装配置第二个tomcat

(1)解压apache-tomcat-9.0.21.tar.gz并改名为tomcat2
tar -zxf apache-tomcat-9.0.21.tar.gz
mv apache-tomcat-9.0.21 tomcat1

(2)修改tomcat的webapps/ROOT/index.jsp 标题为8082
(3)修改tomcat2的端口

3、配置Nginx管理多个tomcat

upstream tomcat{
server 192.168.18.200:8081;
server 192.168.18.200:8082;
}
location / {
proxy_pass http://tomcat;
index index.html index.htm;
}

(五)发动请求测试负载均衡

发送请求http://192.168.18.200/index.jsp 刷新进行测试。

三、Nginx实现动静分离

(一)动静分离介绍

(1)什么是动静分离

动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。

(2)动静分离优势

Tomcat处理静态资源的效率并没有Nginx高,我们可以通过动静分离将静态资源和动态资源分割开来,Tomcat处理动态资源,Nginx响应静态资源,从而减轻tomcat的压力,各自发挥自己的长处,从而提高响应速度,提高访问能力。

(二)动静分离配置

(1)创建文件名show.jsp的文件并在tomcat1上进行部署

<%@ page language="java" import="java.util.Date,java.text.SimpleDateFormat"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<h1>这是tomcat1主页</h1>
<%
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate=sdf.format(date);
out.println(strDate+"<br>");
%>
<img src="images/aaa.jpg">
</body>
</html>

(2)在tomcat2上部署show.jsp文件

<%@ page language="java" import="java.util.Date,java.text.SimpleDateFormat"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
3.在nginx上配置动静分离
4.测试
输入http://192.168.18.200/show.jsp
<body>
<h1>这是tomcat2主页</h1>
<%
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate=sdf.format(date);
out.println(strDate+"<br>");
%>
<img src="images/aaa.jpg">
</body>
</html>

(3)在nginx上配置动静分离

upstream tomcat{
server 192.168.18.201:8081 weight=2;
server 192.168.18.201:8082;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat;
index index.html index.htm;
}
location ~\.(jsp|do|action)$ {
proxy_pass http://tomcat;
}
location ~\.(html|css|js|gif|jpg|png|bmp|swf)$ {
root /usr/local/staticresources;
}

(4)测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网底层民工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值