高并发最终的解决方案离不开io的多路复用。
Nginx和Apache HTTP Server Project的区别
nginx是一台轻量级的HTTP Server,同时nginx也支持其他协议(SSMTP、Top3),Nginx和Apache一样都是来处理和响应用户请求的,被叫做HTTP Server,Nginx主要解决了并发的问题,能支持更高的并发量(官方数据单机10万并发)。
Nginx和Tomcat的区别
Nginx是HTTP Server(处理和响应用户请求),Tomcat是Application Server(存放和运行系统程序)。目前的应用服务器(tomcat jobss)都包含了HTTP Server 的功能
HTTP Server和Application Server的区别与联系。
HTTP Server主要用于访问静态资源,Application Server可以生产动态内容。一般都会将Nginx服务器跑在tomcat等应用服务器前,Nginx服务器也叫做代理服务器
Nginx配置文件格局
image.png配置内容规则
- 用“#”表示注释
- 每行配置的结尾需要加上分号
- 如果配置项值中包括语法符号,比如空格符,那么需要使用单引号或双引号括住配置项值,否则nginx会包语法错误
- 单位简写:K或者k千字节(KiloByte,KB),M或者m兆字节(MegaByte,MB) ms(毫秒),s(秒),m(分钟),h(小时),d(天),w(周,包含7天),M(月,包含30天),y(年,包含365天)
Nginx常用命令
image.pngNginx实现反向代理
- 正向代理:为客户端服务的,请求发送给代理服务器,服务器获取目标服务器内容,发送给客户端,(隐藏了客户端,如国内的vpn翻墙)
- 反向代理:为服务器服务的,客户端请求代理服务器,代理服务器隐藏了目标服务器,(比如负载均衡)
反向代理最重要的配置:
通过proxy_pass转发请求到目标服务器上,如下,转发请求到http://192.168.44.1:9096
image.png
Nginx负载均衡upstream
- wrr:weighted round-robin权重轮训
- ip_hash: IP的哈希结果固定选择一个真实的服务器
- least_conn:当前活跃连接数越小、权重越大,越优先选择
第三方负载均衡模块:如fair(公平,根据响应时间来负载)需要编译安装制定的nginx包
Nginx 1.18.0 安装第三方负载均衡模块 fair
Nginx缓存
-
创建Nginx缓存目录proxy_cache_path /data/nginx/cache
image.png
Nginx实现动静分离
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)${
root /usr/local/soft/nginx/data/static;
}
#或者通过proxy_pass映射到其他静态服务器
Nginx实现数据压缩
Nginx实现跨域访问
为什么存在跨域问题?
浏览器的限制。(出于安全性的考虑)
不同域
image.png
CORS,Cross-Origin Resource sharing(跨域资源共享)
解决跨域的方法:
- (前端解决方法)修改浏览器配置,或使用JSONP代替ajax请求(只能解决get类型的请求)
//使用JSONP代替ajax请求
dataType: "JSONP",
jsonp: "callback",
jsonpCallback: "successCallback",
- (后端解决方法)目标域方法上加上@CrossOrigin,或通过配置类实现指定域可以访问当前域
//加上注解之后,请求会在响应头里加入如下内容
"Access-Control-Allow-Origin":"*"
"Access-Control-Allow-Methods":"GET,POST,PUT,OPTIONS"
"Access-Control-Allow-Credentials":"true"
-
nginx
通过nginx代理,去访问两个不同域的内容(方式一,用nginx代理两个域,方式二,通过在第二个域的前置nginx中加入Access-Control-Allow-Origin)
方式一
方式二
网友评论