nginx反向代理和负载均衡笔记

课前回顾

	proxy_buffer代理缓冲区实际上就是代理内存 (开辟一个内存空间)
	nginx多重代理,服务端返回数据是一点一点返回给用户的 (返回的速度与缓冲区的大小有关)
	proxy_模块可以写到文件中(自己创建名字随意,位置随意 vim /etc/nginx/proxy_params),然后再在server中include,这样可以在不同的location中多次include
	
	[root@web01 ~]# vim /etc/ssh/sshd_config +115	#优化ssh(:115)
	[root@web01 ~]# systemctl restart sshd
	nginx一个代理机不能代理多台代理机或者服务器
	一个集群必须要有负载均衡
	
生产环境web等,常用不同的端口
proxy_set_header Host $host;  Host就是一个变量名
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; X-Forwarded-For就是一个变量名
	变量名也只是一个变量名,随便写
	
更改日志格式 x_forwarded_for  前面加个%   以%为分隔符 ,这样方便取出来日志IP	
'"浏览器配置$http_user_agent" --- %"$http_x_forwarded_for"';  可以不加双引号

server里面的端口只针对当前的server

浏览器使用IP访问服务器或代理机得到的页面 与服务器server配置有关,服务器配置和浏览器反馈结果如下:
使用IP访问:
	1.server层没有配置server_name 10.0.0.53;----->默认页面(本质上还是访问第一个.conf)
	2.server层没有配置server_name 10.0.0.53;同时删除default.conf----->默认页面
	3.server层配置了server_name 10.0.0.53;----->指定的html页面

使用域名访问:	
	4.server层没有配置server_name cs.ym.com;------>访问第一个location,得到默认页面
	5.server层配置了server_name cs.ym.com;和index index.html;------>指定页面
	6.server层配置了server_name cs.ym.com;没有配置index index.html;------>访问第一个location,得到默认页面
	
rpm -qa 查看已经安装过的包
使用scp传输文件,文件属主属组改变
502 bad gateway 无法找到后端的主机

tCDKW6.md.png

代理机(外网IP)


server {
	listen 80;
	server_name cs.ip.com;
	
	location / {
	# 代理后端的机器(代理机或者代理服务器)
	proxy_pass http://10.0.0.7:80;
	# 客户端的请求头部信息,带着域名来找我,我也带着域名去找下一级(代理机或者代理服务器)
	proxy_set_header Host $host;
	# 显示客户端的真实ip(和代理的所有IP)
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	
	#nginx代理与后端服务器连接超时时间(代理连接超时)
	proxy_connect_timeout 60s;
	#nginx代理等待后端服务器的响应时间
	proxy_read_timeout 60s;
	#后端服务器数据回传给nginx代理超时时间
	proxy_send_timeout 60s;
	
	#nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传, 不是全部接收完再传给客户端
	proxy_buffering on;
	#设置nginx代理保存用户头信息的缓冲区大小
	proxy_buffer_size 4k|8k;
	#proxy_buffers 缓冲区
	proxy_buffers 8 4k|8k;
	#使用http 1.1协议版本
	proxy_http_version 1.1;
	}
}

代理机 proxy代理模板

端口号可以修改,80端口可以省略

server {
	listen 80;
	server_name cs.ip.com;
	
	location / {
	# 代理后端的机器(代理机或者代理服务器)
	proxy_pass http://10.0.0.7:80;
	include proxy_params;
	}
}

vim /etc/nginx/proxy_params
	# 客户端的请求头部信息,带着域名来找我,我也带着域名去找下一级(代理机或者代理服务器)
	proxy_set_header Host $host;
	# 显示客户端的真实ip(和代理的所有IP)
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	
	#nginx代理与后端服务器连接超时时间(代理连接超时)
	proxy_connect_timeout 60s;
	#nginx代理等待后端服务器的响应时间
	proxy_read_timeout 60s;
	#后端服务器数据回传给nginx代理超时时间
	proxy_send_timeout 60s;
	
	#nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传, 不是全部接收完再传给客户端
	proxy_buffering on;
	#设置nginx代理保存用户头信息的缓冲区大小
	proxy_buffer_size 4k|8k;
	#proxy_buffers 缓冲区
	proxy_buffers 8 4k|8k;
	#使用http 1.1协议版本
	proxy_http_version 1.1;

服务器模板

server {
	listen 80;
	server_name cs.zh.com;
	root /code/wordpress;
	index index.php;
		
	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include /etc/nginx/fastcgi_params;
		}
}

负载均衡服务器配置模板

ngx_http_upstream_module模块

7层负载均衡只能做http协议的负载均衡

upstream backend {
    server backend1.example.com       weight=5;
    server backend2.example.com:8080;
    server 10.0.0.7;
    server 10.0.0.8;
    server unix:/tmp/backend3;
    server backup1.example.com:8080   backup;
}
server {
	listen 80;
	server_name cs.zh;

    location / {
        proxy_pass http://backend;
        include proxy_params;
    }
}
#include后面的相对路径指定就是/etc/nginx/ 下
vim /etc/nginx/proxy_params
	# 客户端的请求头部信息,带着域名来找我,我也带着域名去找下一级(代理机或者代理服务器)
	proxy_set_header Host $host;
	# 显示客户端的真实ip(和代理的所有IP)
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	
	#nginx代理与后端服务器连接超时时间(代理连接超时)
	proxy_connect_timeout 60s;
	#nginx代理等待后端服务器的响应时间
	proxy_read_timeout 60s;
	#后端服务器数据回传给nginx代理超时时间
	proxy_send_timeout 60s;
	
	#nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传, 不是全部接收完再传给客户端
	proxy_buffering on;
	#设置nginx代理保存用户头信息的缓冲区大小
	proxy_buffer_size 4k|8k;
	#proxy_buffers 缓冲区
	proxy_buffers 8 4k|8k;
	#使用http 1.1协议版本
	proxy_http_version 1.1;
	
	#解决集群单点故障的反馈页面影响用户体验,自动跳转到下一个负载均衡主机
	proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;

Nginx负载均衡调度算法

调度算法 概述
轮询(RR) 时间顺序逐一分配到不同的后端服务器(默认)
weight(WRR) 加权轮询,weight值越大,分配到的访问几率越高(默认是1)
ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器(公网IP),作用于用户登录后
url_hash 按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn 最少链接数,那个机器链接数少就分发(链接数不等于请求数)

服务器配置不同的时候 负载均衡服务器(lb)可以使用加权轮询,

ip_hash:(session共享)会话保持

​ 缺陷:同一个公网IP,访问量异常的时候

cookie:F12删除cookie,可导致需要再次登录

session:user_login文件里面记录着在网站中登录的信息

#配置ip_hash,可能会导致某一台服务器连接过多,优点是会话保持
upstream load_pass {
    ip_hash;
    server 10.0.0.7:80 weight=5;
    server 10.0.0.8:80;
}
posted @ 2020-05-26 07:01  看萝卜在飘  阅读(172)  评论(0编辑  收藏  举报