Nginx入门
Nginx是一个轻量的Http服务器,可以高效处理反向代理,负载均衡等功能。
Nginx能做什么
反向代理
负载均衡
动静分离
处理跨域
…
安装
Mac环境
brew install nginx //安装
nginx -v //查看版本
nginx //启动nginx
可通过nginx.conf查看默认端口号,一般初始默认为8080,找不到配置文件目录可执行nginx -t 查看
浏览器中访问[http://localhost:8080],出现该页面则初始化成功
Window环境
window环境可通过官网安装即可
反向代理
代理是服务器与客户端之间的一层服务器,客户端向代理服务器发起请求,代理服务器再将请求发送给真正要请求的服务器,再响应给客户端。如我们平时使用的VPN就是一种,这种是正向代理,它是为客户端服务的。
反向代理则是客户端发起请求之后,由代理服务器来接受请求,再将请求发送到内部服务器上,再将结果响应给客户端,它是为服务端服务的。
有些同学听起来可能两者有些类似分不清,举个例子。
正向代理就是我们平时如果要访问外网,我们需要使用VPN,我们向VPN发起请求,它将我们的请求代理到外网。
反向代理就是我们去访问某个公司的网站,这时我们去访问他们的某一个服务器,这个服务器会将收到的请求发送给他们内部的其他多个服务器,我们作为客户是没有感知的。
负载均衡
当一台服务器的访问量越来也大时,它承受的压力也越来越大,直至挂掉,为了避免这种情况我们就需要有更多的服务器来分摊压力,这时就可以用到反向代理将客户端端请求分散到多个内部服务器上来缓解压力。而负载均衡就是将收到的请求合理地分配到合适的服务器上,从而保证整个服务器的性能最优情况。
常用策略
1.轮询(默认情况)
nginx将把收到的请求轮流按顺序分配给不同的服务器,若某台服务器挂掉则自动剔除
upstream myserver{
server 127.0.0.1:80;
server 127.0.0.1:81;
}
1
2
3
4
2.权重
通过使用weight(默认为1),给服务器设置权重,权重越高分配到的也更多。
upstream myserver{
server 127.0.0.1:80 weight =1;
server 127.0.0.1:81 weight =2;
}
1
2
3
4
3.固定ip
上面两种情况都会有一个弊端,假如用户在不多次访问都不在同一台服务器上的话,此时多个服务器的session是不共享的,通过ip_hash可以让请求按ip分配,固定ip访问固定的服务器。
upstream myserver{
ip_hash;
server 127.0.0.1:80;
server 127.0.0.1:81;
}
1
2
3
4
5
4.最小连接数策略
将请求优先分配给压力较小的服务器,它可以平衡每个队列的长度,并避免向压力大的服务器添加更多的请求。
upstream myserver{
least_conn;
server 127.0.0.1:80;
server 127.0.0.1:81;
}
1
2
3
4
5
处理跨域
例如
客户端的域名为a.com
服务端域名为b.com
现在我们客户端向服务端发起请求的话会因为域名不同导致跨域,这时候我们只需要通过nginx将server_name设置为a.com,将其代理到b.com。
server{
listen 80;
server_name a.com
location /{
proxy_pass b.com
}
}
1
2
3
4
5
6
7
原文链接:https://blog.youkuaiyun.com/weixin_43240744/article/details/122550438