参考视频:https://www.bilibili.com/video/BV1zJ411w7SV?spm_id_from=333.1007
类似于爬虫中设置的代理IP由客户端设定。
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真是服务器的地址。
单个服务器解决不了,我门增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器的上,将负载分发到不同服务器上,就是我们所说的负载均衡。
为了加快网站的解析速度,可以把静态页面和动态页面由不同的服务器来解析,加快解析速度。将低原来单个服务器压力。
详情请参考:cnblogs.com/Blogwj123/p/15525270.html
# 通常是使用nginx命令是进入nginx的目录后使用的 # 1.查看版本号 ./nginx -v # 2.开始 ./nginx # 3.关闭 ./nginx -s stop # 4.重新加载 ./nginx -s reload # 5.查看帮助 ./nginx -h
位置:
从配置文件的开始到events
块之间的内容,主要设置一些影响nginx
服务器整体运行的配置指令
#user nobody; worker_processes 1; # worker_processes值越大,表示支持并发数量越多。 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid;
events
块涉及的指令主要影响Nginx
服务器与用户网络连接
events { worker_connections 1024; # 表示最大连接数。 }
Nginx
配置最频繁的部分,代理、缓存和日志定义的绝大多数功能和第三方模块的配置都在这里。http全局块
和Server块
。1.http全局块
2.Server块
server { listen 80; server_name localhost; # 改为IP地址 #charset koi8-r; #access_log logs/host.access.log main; location / { root html; proxy_pass http:127.0.0.1:8080; index index.html index.htm; } }
server { listen 9001; server_name IP地址; location ~/edu/ { # 路径中包含edu转发到 8081的地址 proxy_pass http://127.0.0.1:8080; } location ~/vod/ { # 路径中包含vod转发到 8081的地址 proxy_pass http://127.0.0.1:8081; } }
实现效果
配置
http { upstream mysever{ server 127.0.0.1:8080; # 后面还有weight 代表权重,表示分配到的概率。 server 127.0.0.1:8080; } server { listen 80; server_name 192.168.17.129; location / { proxy_pass http://myserver; } } }
nginx提供的分配策略
轮训(默认)
每个请求按照时间顺序注意分配到不同的后端服务器,如果后端down
掉能自动剔除。
weight
weight
代表权重默认值是1,权重越高被分配的客户端越多;
http { upstream mysever{ server 127.0.0.1:8080 weight=1; server 127.0.0.1:8080 weight=3; } server { listen 80; server_name 192.168.17.129; location / { proxy_pass http://myserver; } } }
ip_hash
每个请求按访问IP的hash
结果分配,这样每一个访客固定访问一个后端服务器,可以解决session
的问题,例如;
http { upstream mysever{ ip_hash; server 127.0.0.1:8080 weight=1; server 127.0.0.1:8080 weight=3; } server { listen 80; server_name 192.168.17.129; location / { proxy_pass http://myserver; } } }
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
http { upstream mysever{ server 127.0.0.1:8080 weight=1; server 127.0.0.1:8080 weight=3; fair; } server { listen 80; server_name 192.168.17.129; location / { proxy_pass http://myserver; } } }
两种方式
1.一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上发布,目前主流方式。
2.动态文件跟静态文件混合在一起发布,通过nginx
来分开,使用较少。
缓存
location的缓存时间,结合浏览器确认使用。具体间概述。
不适用与经常更改的静态资源。
server { listen 9001; server_name IP地址; location /www { # data目录下的文件夹 该路径一般写成static root /data/ ;# root下的文件夹 index index.html index.htm; # 默认的,根据情况修改。 } location /image/ { # root /data/; autoindex on; # 显示静态资源列表 } }
问题:
主从复制 :
nginx
Keepalived
IP
Nginx
和redis
类似都才用了io多路复用机制;worker数和cpu数量相等比较合适。