好久没写博客了,之前一都是用OneNote来记录所学的,今天记录一下之前的学习的Nginx,Nginx是在我学习完Spring框架学习的,这几天重新整理下笔记
在这篇博客中,主要介绍了Nginx的主要功能,和配置文件nginx.conf 的重要性,
一. 简介
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器;
正向代理类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉它我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我;
Nginx 的并发处理能力在同类型的Web服务器中表现极好(Apache、Lighttpd),在全世界范围内大量的网站使用了Nginx,国内互联网中也大量使用了Nginx,比如:淘宝、新浪、搜狐、网易、美团等;
二. 环境搭建
官方网站:http://nginx.org
下载nginx-1.14.0.tar.gz的源代码文件:wget http://nginx.org/download/nginx-1.14.0.tar.gz
启动nginx执行命令:
1、普通启动:
切换到nginx安装目录的sbin目录下,执行: ./nginx
2、通过配置文件启动:
./nginx -C /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -C /usr/local/nginx/conf/nginx.conf(其中-c是指定配置文件)
3、检查Nginx是否启动:
通过查看进程: ps -ef| grep nginx
nginx体系结构由master进程和其worker进程组成:
master进程读取配置文件,并维护worker进程,而worker进程则对请求进行实际处理:
关闭
Nginx的关闭有多种方式:
1、优雅关闭Nginx:
找出nginx的进程号: ps -ef| grep nginx
执行命令: kill -QUIT主pid
其中pid是主进程号的pid (master process),其他为子进程pid (workerprocess)
2、快速关闭Nginx:
找出nginx的进程号: ps -ef| grep nginx
kill-TERM主pid
3、重启Nginx:
./nginx -s reload
三. 配置文件
核心配置文件, Nginx.conf 三部分组成
基本配置,events,http配置(基本配置,server配置)
四. Nginx的主要用途
静态服务器
负载均衡
静态代理
虚拟主机
五. 静态服务器
Nginx是一个 http的web 服务器 ,可以将服务器上 的 静态文件(HTML,图片)
通过http协议返回给浏览器客户端
六. 负载均衡
1. 概述:
在网站创立初期,我们一般都使用单台机器对外提供集中式服务;
但是随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务;
但是,我们网站对外提供的访问入口通常只有一一个,比如
www.web.com;
那么当用户在浏览器输入
www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情;
负载均衡通常是指将请求"均匀”分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀;
2. 负载均衡的实现方式:
硬件负载均衡
比如F5、深信服、Array 等;
优点是有厂商专业的技术服务团队提供支持,性能稳定;缺点是费用昂贵,对于规模较小的网络应用成本太高
软件负载均衡。
比如Nginx、LVS、HAProxy 等;优点是免费开源,成本低廉;
3. Nginx的负载均衡
通过nginx 的Nginx.conf 文件进行配置可实现
配置如下: (配置2步即可)
1、在http模块加上: (举例)
upstream www.myweb.com {
server 127 .0.0.1:9 100 weight=3 ;
server 127.0.0.1:9200 weight=1;
}
其中weight= 1表示权重,用于后端服务器性能不均的情况,访问比率约等于权重之比,权重越大访问机会越多;
upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障的机器;
2、在server模块里添加: (举例)
location /myweb {
proxy_ pass http://www.myweb.com;
}
其中 www.myweb.com 字符串要和 upstream后面的字符串相等;
upstream backserver {
server 127.0.0.1:9100;
server 127.0.0.1:9200 backup; (其它所有的非backup机器down的时候,才请求backup机器)
}
upstream backserver {
server 127.0.0.1:9100;
server 127.0.0.1:9200 down; (down表示当前的server是down状态,不参与负载均衡)
}
七. 静态代理
把所有静态资源的访问改为访问nginx,而不是访问tomcat,因为nginx更擅长于静态资源的处理,
性能更好,效率更 高;
所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理;
通过配置 Nginx.conf 即可完成
在配置文件中 添加静态资源的location
方式一:
#当访问静态资源,则从linux服务器/opt/static目录下获取(举例)
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3
|wma)$ {
root /opt/static;
}
放置静态资源的目录,要注意一下目录权限问题,如果权限不足,给目录赋予权限;
方式二:
通过在nginx.conf配置文件中配置静态资源所在目录实现,比如:
location ~ .*/(css|js|img|images|image) {
root /opt/static;
}
我们将静态资源放入 /opt/static 目录下,然后用户访问时由nginx返回这些静态资源;
八. 动静分离
Nginx的负载均衡和静态代理结合在一起, 我们可以实现动静分离,这是实际应用中常见的一-种场景:
动态资源,如jsp由tomca域其他web服务器完成:
静态资源,如图片、css、js等由nginx服务 器完成;它们各司其职,专注于做自2擅长的事情;
动静分离充分利用了它们各自的优势,从而达到更高效合理的架构;
步骤:
九. 虚拟主机
虚拟主机,就是把一台物理服务器划分成多个”虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站;
Nginx提供虚拟主机的功能,就是为了让我们不需要安装多个Nginx,就可以运行多个网站:
Nginx下,一个server标签就是一个虚拟主机;
nginx的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个server节点即可;
配置虚拟主机通过有下面两种方式:
示例: