nginx 反向代理 负载均衡 动静分离
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一样东西的诞生通常都是为了解决某些问题对于 Nginx 而言也是如此。
比如你出于无聊写了一个小网站部署到 tomcat 之后可以正常访问
但是后来你的这个小网站因为内容很诱人逐步的火了用户越来越多并发量也慢慢增大此时一台服务器已经满足不了网站的需求了。
你不能眼睁睁的看着你的“孩子”被压垮呀于是乎一咬牙又花钱加了几台服务器。
一、什么是Nginx
Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器在微服务架构中Nginx作为客户端请求的第一层中间件通常将请求转发代理给网关。一般Nginx运用的主要场景有反向代理、负载均衡、动静分离等在微服务架构如下:
其特点是占用内存少并发能力强运行还很文档几乎可以做到7x24h不间断运行即使运行数个月也不需要重启。而且还能在服务不间断的情况下进行软件版本的升级。
Nginx代码完全用C语言编写官方数据测试表明能够支持高达50000个并发连接数的响应。
反向代理
为了安全起见一般我们不会将应用服务器内网地址暴露给外界此时就让Nginx作为代理来访问内网地址。而Nginx的IP地址可以作为公网IP暴露给外界使用这样就屏蔽了内网服务器信息。例如
正向代理访问www.google.com 需要正向代理访问的目的地不发生变化
- 首先在本机修改hosts文件
路径为:C:\Windows\System32\drivers\etc\hosts
添加以下内容:
# 192.168.152.160是远程Nginx服务器地址
192.168.152.160 gulimall.com
当客户端输入 gulimall.com时通过本地域名映射规则解析出Nginx服务器地址
- 设置Nginx反向代理
修改nginx.conf的server段
listen 80;
server_name gulimall.com;
location / {
#代理给内网服务地址
proxy_pass http://172.20.10.3:8000; #商品服务的地址
}
这样我们就实现了Nginx的反向代理是不是很简单呢
三、负载均衡
现在有好几台服务器了也有代理服务器了。但是因为你预算有限后加的几台服务器配置有高有底这时候如果能让配置高的服务器多承担点压力让配置低的少承担点压力就好了。
Nginx的负载均衡就可以完成这样的需求。
在 conf.d 目录下创建 gulimall.conf --- 操作 cp defaut.conf gulimall.conf
gulimall.conf 配置文件如下
listen 80;
server_name gulimall.com;
location / {
#代理给内网服务地址
proxy_pass http://gulimall; #商品服务的地址
}
nginx.conf 配置文件如下 选择的默认负载均衡轮询
upstream gulimall{
server 172.20.10.3:88;
server 172.20.10.3:89;
}
网关的配置文件 application.yml文件如下
spring:
application:
name: gulimall-gateway
cloud:
gateway:
routes:
- id: gulimall_host_route
uri: lb://gulimall-product
predicates:
- Host=gulimall.com,item.gulimall.com
四、动静分离
你的小网站里有些请求是需要后台处理的但是有些请求是不需要的比如 css、html、jpg、js等文件这些统称为静态文件。
Nginx可以根据一定规则把不变的资源和经常变的资源区分开做好了拆分之后我们就可以根据静态资源的特点将其做缓存操作从而提高资源响应的速度。
gulimall.conf 配置文件如下
location /static/ {
root /usr/share/nginx/html;
}
把对应的静态文件放在/usr/share/nginx/html/即可
OK通过动静分离你的小网站响应速度也上去了用户体验更好了你终于送了口气。
--不要用肉体的勤奋去掩盖思考的懒惰--