3、Nginx学习笔记——应用场景

Nginx主要应用

  • 静态网站
  • 负载均衡
  • 静态代理
  • 动静分离
  • 虚拟主机

静态网站

nginx是一个http的web服务器,可以将服务器上的静态文件(html,图片等)通过http协议返回给浏览器端

server{
	listen 80; #端口号
	location/{
		root /opt/www/;静态文件路径
	}
}

下载ace-admin的一个bootstrap 静态网站模板,上传到linux服务器的opt/ace文件夹下,AceAdmin为下载项目的文件夹名称
修改配置文件

vim /usr/local/nginx/conf/nginx.conf
-----------------------
location / {
           # root   html;
            root /opt/ace/AceAdmin;
            index  index.html index.htm;
        }

保存退出后,检查配置文件是否存在问题

// 关闭nginx
ps -ef | grep nginx

kill -QUIT pid(master-process)
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
// 启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

浏览器端访问ip
3、Nginx学习笔记——应用场景_第1张图片

// 规则:
ip + port ==root
http://192.168.132.128:80/ = root = /opt/ace/AceAdmin
//无法访问
http://192.168.132.128:80/ace = root/ace = /opt/ace/AceAdmin/ace

负载均衡

早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求。随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服务器就算将性能优化得再好,也不能支撑这么大用户量的访问压力了,这个时候就需要使用多台机器,设计高性能的集群来应对。
那么,多台服务器是如何去均衡流量、如何组成高性能的集群的呢?
负载均衡(Load Balancer)是指把用户访问的流量,通过「负载均衡器」,根据某种转发的策略,均匀的分发到后端多台服务器上,后端的服务器可以独立的响应和处理请求,从而实现分散负载的效果。负载均衡技术提高了系统的服务能力,增强了应用的可用性。
upstream 是配置nginx与后台服务器负载均衡非常重要的一个模块,并且还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发送故障,则前端的请求不会被转发到该故障的机器。
在http模块上添加

  1. 添加upstream
upstream www.web.com{
	server 127.0.0.1:8080 weight=2;
	server 127.0.0.1:8090 weight=1;
}

weight =1 表示权重,用于后端服务器性能不均的情况。访问比率约等于权重之比,权重越大,机会越多
2. server 添加location

location /myweb{
	proxy_pass http://www.web.com;
}

proxy_pass的值http://www.web.com 要和upstream 后面的字符串相等

负载均衡策略:

  • 轮询(默认)
    upstream www.web.com{
    server 127.0.0.1:8080;
    server 127.0.0.1:8090;
    }
  • 权重
    upstream www.web.com{
    server 127.0.0.1:8080 weight=2;
    server 127.0.0.1:8090 weight=1;
    }
  • ip_pash 绑定,每个请求按照访问的ip的hash进行分配,每个ip固定访问一个后端服务器,解决session丢失
    upstream www.web.com{
    ip_pash;
    server 127.0.0.1:8080;
    server 127.0.0.1:8090;
    }
  • 最少连接:请求会转发到连接数最少的服务器上
    upstream www.web.com{
    least_count;
    server 127.0.0.1:8080;
    server 127.0.0.1:8090;
    }
    其他配置:
    upstream www.web.com{
    server 127.0.0.1:8080;
    server 127.0.0.1:8090 backup; (其他所有的非backup机器down的时候,才请求bakcup机器,备用机器)
    }
    upstream www.web.com{
    server 127.0.0.1:8080;
    server 127.0.0.1:8090 down; (down表示当前的server是down状态,不参与负载均衡)
    }

静态资源

把所有静态资源的访问该问访问nginx。而不是访问tomcat,因为nginx更擅长静态资源的处理,性能更好,效率更高。所以在实际应用中,我们将静态资源(图片、css、html、js…)交给nginx处理。
静态资源代理通过配置nginx.conf文件实现:

  1. 方式一:基于文件后缀
    通过在nginx.conf配置文件中添加静态资源的location,比如:
    当访问静态资原,则从linux服务器/opt/ace/AceAdmin目录下获取
location ~ .*\.(js|css|htm|html|gif|jpeg|png|bmp|swf|ioc|rar|zip|txt|fiv|mid|doc|ppt|pdf|xls|mp3|wma)${
	root /opt/ace/AceAdmin;
}
~ 表示正则匹配,也就是说后面的内容可以是正则表达式匹配
. 第一个点表示任意字符
* 表示一个或多个字符
\.是转义字符,是后面这个点的转义字符
| 表示  或
$ 表示 结尾
整个配置表示以“.” 后面括号里边的这些后缀结尾的文件都由nginx处理
  1. 方式二:基于资源目录
location ~ .*/(css|js|image|img){
	root /opt/ace/AceAdmin
}

动静分离

Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景;
动态资源,如jsp由tomcat或其他web服务器先成:
静态资源,如图片、Css、 js等由nginx服务器完成;
各司其职,专注于做自己a长的事情;
动静分离充分利用了它们各自的优势,从而达到更高效台理的架构
3、Nginx学习笔记——应用场景_第2张图片

虚拟主机

虚拟主机,就是把一台物理服务器划分成多个虚拟"的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站,
Nginx提供虚拟主机的功能,就是为了让我们不需要安装多个Nginx ,就可以运行多个网站;
Nginx下,一个server标签就是一个虚拟主机
nginx的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个server节点即可
配置虚拟主机通常有下面两种方式
基于域名的虚拟主机

server{
	listen 80;
	server_name www.shop.com;
	location /myapp{
		proxy_pass http://shop.com;
	}
}
server{
	listen 80;
	server_name www.p2p.com;
	location /myapp{
		proxy_pass http://p2p.com;
	}
}

基于端口的虚以主机

server{
	listen 8080;
	server_name www.shop.com;
	location /shop{
		proxy_pass http://www.shop.com;
	}
}
server{
	listen 8090;
	server_name www.shop.com;
	location /p2p{
		proxy_pass http://www.p2p.com;
	}
}

你可能感兴趣的:(nginx)