Nginx实战—常见的几种应用场景

1、跨域解决方案

问题:访问域名与请求的地址不一致,无法返回请求结果
解决方法:
1、jsonp
	只支持get请求不支持post请求
2、nginx(常用)
	使用nginx代理
3、httpClient
	使用httpclient进行内部请求转发
4、添加请求头
	使用http响应头允许跨域设置
	response.setHeader("Access-Control-Allow-Origin","*")
5、使用springcloud的zuul	
1.1 CORS(跨域资源共享)解决跨域问题

设置允许请求的域名,多个域名以逗号分隔
Access-Control-Allow-Origin: http://www.YOURDOMAIN.com
设置允许请求的方法,多个方法以逗号分隔
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
设置允许请求自定义的请求头字段,多个字段以逗号分隔
Access-Control-Allow-Headers: Authorization
设置是否允许发送 Cookies
Access-Control-Allow-Credentials:true

1.2 注解CrossOrigin

在controller类上添加CrossOrigin注解表示当前类中的
所有入口函数都可以实现跨域。也可以指定某个conroller中具体的方法。

1.3 共享Cookie

Cookie的作用在于充当一个信息载体在Server端和Browser端进行信息传递,而Cookie一般是以域名为分割的,例如a.xxx.com与b.xxx.com的Cookie是不能互相访问的,但是子域名是可以访问上级域名的Cookie的。即a.xxx.com和b.xxx.com是可以访问xxx.com下的Cookie的,于是就能将顶级域名的Cookie作为OpenId的载体

2、nginx负载均衡算法

2.1 轮询机制

负载均衡可以提高网站的吞吐量,减轻单台服务器压力
默认是轮询机制

upstream backserver{
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}

server {
        listen       80;
        server_name  www.link.com;
        location / {
		    proxy_pass  http://backserver;
			index  index.html index.htm;
        }
}
2.2 权重

按比重访问

upstream backserver{
	server 127.0.0.1:8080 weight=1;
	server 127.0.0.1:8081 weight=2;
}

server {
        listen       80;
        server_name  www.link.com;
        location / {
		    proxy_pass  http://backserver;
			index  index.html index.htm;
        }
}
2.3 ip绑定

只让一个ip地址访问,

upstream backserver{
	ip_hash;
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}

server {
        listen       80;
        server_name  www.link.com;
        location / {
		    proxy_pass  http://backserver;
			index  index.html index.htm;
        }
}

3、Nginx搭建API接口网关

B调用时为什么要走www.link.com/a?
假如A域名修改,B中所有调用点都要修改,
若通过www.link.com/a访问,只修改
对应代理地址即可。

www.link.com/a			A[http://192.168.0.0/A]

				nginx

www.link.com/b			B[http://192.168.0.1/B]
						B中调用A接口,
						通过www.link.com/a访问	
## 配置
server {
        listen       80;
        server_name  www.link.com;
        
        location /A {
		    proxy_pass  http://a.com/A;
			index  index.html index.htm;
        }
        location /B {
		    proxy_pass  http://b.com/B;
			index  index.html index.htm;
        }
}

4、服务器宕机容错机制

一主一备、多主多备
高可用性
1、在主机宕机时,可以切换到备用服务器
2、nginx可能宕机,使用LVS策略
3、nginx都不能使用时,使用高可用工具keepalive重启脚本,
4、自动重启,多次重启失败发生报警,用运维人员手动重启

在这里插入图片描述

4.1 宕机轮询
## 主机宕机时,自动轮询下一台服务器
upstream backserver{
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}

server {
        listen       80;
        server_name  www.link.com;
        location / {
		    proxy_pass  http://backserver;
			index  index.html index.htm;
			proxy_connect_timeout 1;
			proxy_send_timeout 1;
			proxy_read_timeout 1;
        }
}
4.2 其他问题
  • 发布新版本时,不影响用户访问

服务器可以访问,
先发布主服务器,主服务器发布成功,再部署到备服务器

  • tomcat发布版本时session失效

存放到redis中
存放到数据库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值