湛江网站建设方案托管卖网站赚钱
2026/3/29 22:16:11 网站建设 项目流程
湛江网站建设方案托管,卖网站赚钱,外国购物网站有哪些平台,批量查询神马关键词排名文章目录**Nginx代理服务**正向代理(内部上网) 客户端--代理-服务端反向代理 客户端-代理--服务端正向与反向代理的区别Nginx反向代理配置Nginx代理配置的语法Nginx负载均衡**常用负载均衡软件****Nginx负载均衡类型****Nginx负载均衡配置场景**Nginx …文章目录**Nginx代理服务**正向代理(内部上网) 客户端--代理-服务端反向代理 客户端-代理--服务端正向与反向代理的区别Nginx反向代理配置Nginx代理配置的语法Nginx负载均衡**常用负载均衡软件****Nginx负载均衡类型****Nginx负载均衡配置场景**Nginx upstream 虚拟配置语法Nginx反向代理负载小实验**负载均衡常见问题****Nginx负载均衡后端状态****Nginx负载均衡调度算法****Nginx负载均衡TCP实践**创建相关目录编辑配置文件重启服务测试**Nginx动静分离**Nginx代理服务互联网请求里面, 客户端无法直接向服务端发起请求, 那么就需要用到代理服务, 来实现客户端和服务通信Nginx 作为代理服务可以实现很多的协议代理, 我们主要以 http 代理为主正向代理(内部上网) 客户端–代理-服务端反向代理 客户端-代理–服务端正向与反向代理的区别区别在于代理的对象不一样正向代理代理的对象是客户端反向代理代理的对象是服务端举例说明进行理解正反向代理正向代理代购你客户端想买国外的东西但自己买不到找代购正向代理帮你买国外商家目标服务器只知道代购不知道你反向代理小区门卫你客户端想找小区里的住户后端服务器但不能直接进先找门卫反向代理门卫帮你传话 / 找对应住户你不知道具体找的是哪栋楼的住户Nginx反向代理配置Nginx代理配置的语法Syntax: proxy_pass URL;Default: — Context: location,ifinlocation, limit_except http://localhost:8000/uri/ http://10.0.0.7:8000/uri/ http://unix:/tmp/backend.socket:/uri/添加发往后端服务器的请求头信息Syntax: proxy_set_header field value;Default: proxy_set_header Host$proxy_host;proxy_set_header Connection close;Context: http, server, location# 用户请求的时候HOST的值是www.tf.com, 那么代理服务会向后端传递请求的还是www.tf.comproxy_set_header Host$http_host;# 将$remote_addr的值放进变量X-Real-IP中$remote_addr的值为客户端的ipproxy_set_header X-Real-IP$remote_addr;# 客户端通过代理服务访问后端服务, 后端服务通过该变量会记录真实客户端地址proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;代理到后端的 TCP 连接、响应、返回等超时时间设置//nginx代理与后端服务器连接超时时间(代理连接超时)Syntax: proxy_connect_timeouttime;Default: proxy_connect_timeout 60s;Context: http, server, location //nginx代理等待后端服务器的响应时间 Syntax: proxy_read_timeouttime;Default: proxy_read_timeout 60s;Context: http, server, location //后端服务器数据回传给nginx代理超时时间 Syntax: proxy_send_timeouttime;Default: proxy_send_timeout 60s;Context: http, server, locationproxy_buffer 代理缓冲区//nignx会把后端返回的内容先放到缓冲区当中然后再返回给客户端,边收边传, 不是全部接收完再传给客 户端 Syntax: proxy_buffering on|off;Default: proxy_buffering on;Context: http, server, location //设置nginx代理保存用户头信息的缓冲区大小 Syntax: proxy_buffer_size size;Default: proxy_buffer_size 4k|8k;Context: http, server, location //proxy_buffers 缓冲区 Syntax: proxy_buffers number size;Default: proxy_buffers84k|8k;Context: http, server, locationProxy 代理网站常用优化配置如下将配置写入新文件调用时使用 include 引用即可cat/etc/nginx/proxy_params proxy_set_header Host$http_host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_connect_timeout30;连接后端超时时间 proxy_send_timeout60;后端回传数据超时时间 proxy_read_timeout60;代理等待后端响应超时时间 proxy_buffering on;proxy_buffer_size 32k;proxy_buffers4128k;代理配置 location 的时候调用, 方便后续多个 location 重复使用location /{proxy_pass http://127.0.0.1:8080;include proxy_params;}Nginx负载均衡负载均衡就是代理吗不是的负载均衡是反向代理的核心功能之一但代理正向 / 反向≠ 负载均衡—— 正向代理基本不涉及负载均衡反向代理可以有负载均衡多后端时也可以没有单后端时。用一句话理清逻辑代理是 “中间转发” 的角色负载均衡是 “多后端分发” 的规则只有当反向代理背后有「多个后端服务器」时才会用到负载均衡功能。误区 1“代理就是负载均衡”—— 错正向代理和单后端反向代理都没有负载均衡功能只有多后端反向代理才会用到。误区 2“负载均衡就是反向代理”—— 错负载均衡是 “分发规则”反向代理是 “转发角色”SLB负载均衡服务本质是 “反向代理 负载均衡” 的组合但负载均衡本身不是代理。误区 3“Nginx 是负载均衡”—— 不严谨Nginx 的核心是反向代理负载均衡是它的一个模块功能需要配置多后端才会生效。1、什么是负载均衡把请求数据平均分配到后端的服务器2、为什么要进行使用负载均衡当我们的Web服务器直接面向用户往往要承载大量并发请求单台服务器难以负荷我使用多台Web服务器组 集群前端使用Nginx负载均衡将请求分散的打到我们的后端服务器集群中实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾Nginx就是Server Load Balancer服务器负载均衡SBLSBL核心是解决 “多台后端服务器如何分摊客户端请求压力的问题NGINX就是典型的SBL常用负载均衡软件1.Nginx2.Haproxy3.LVS4.F5硬件Nginx负载均衡类型四层负载均衡是OSI七层模型中的传输层那么传输层Nginx已经能支持TCP/IP的控制所以只需要对客户端的请求进行TCP/IP协议的包转发就可以实现负载均衡那么它的好处是性能非常快、只需要底层进行 应用处理而不需要进行一些复杂的逻辑七层负载均衡七层负载均衡它是在应用层那么它可以完成很多应用方面的协议请求比如我们说的http应用的负载均衡 它可以实现http信息的改写、头信息的改写、安全应用规则控制、URL匹配规则控制、以及转发、rewrite等等的规则所以在应用层的服务里面我们可以做的内容就更多那么Nginx则是一个典型的七层负载均衡四层和七层负载均衡的区别1、七层负载均衡没有四层的效率高因为四层负载是在数据包的底层就进行数据的分发但是七层是在顶层进行分发的2、七层是更贴近应用服务像http https就是七层的协议像Nginx可以做会话的保持、URL路径规划匹配、head头部改写等这些四层是没有办法做到的3、四层负载是无法识别域名Nginx负载均衡配置场景Nginx upstream 虚拟配置语法Syntax: upstream name{...}Default: - Context: http //upstream例子 upstream backend{server backend1.example.comweight5;server backend2.example.com:8080;server unix:/tmp/backend3;server backup1.example.com:8080 backup;}server{location /{proxy_pass http://backend;}}Nginx反向代理负载小实验使用web01和web02提供网页访问服务lb01配置反向代理和负载1、Web01服务器上配置nginx, 并创建对应html文件[rootweb01 conf.d]# cat www.confserver{listen80;server_name www.tf.com;location /{root /code/www;index index.html;}}[rootweb01 conf.d]# mkdir -p /code/www[rootweb01 conf.d]# echo web01 /code/www/index.html[rootweb01 conf.d]# systemctl restart nginx2、Web02服务器上配置nginx, 并创建对应html文件[rootweb02 conf.d]# cat /etc/nginx/conf.d/www.confserver{listen80;server_name www.tf.com;location /{root /node;index index.html;}}[rootweb02 conf.d]# mkdir -p /code/www[rootweb02 conf.d]# echo web02 /code/www/index.html[rootweb02 conf.d]# systemctl restart nginx3、lb01配置 Nginx 负载均衡1、在lb01上安装好Nginx2、编写配置文件[rootlb01 conf.d]# cat proxy.confupstream www{server10.0.0.7:80;server10.0.0.8:80;}server{listen80;server_name www.tf.com;location /{proxy_pass http://www;include proxy_params;}}3、Nginx 负载均衡调度使用的 proxy_params[rootlb01 conf.d]# cat /etc/nginx/proxy_paramsproxy_set_header Host$http_host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_connect_timeout30;proxy_send_timeout60;proxy_read_timeout60;proxy_buffering on;proxy_buffer_size 32k;proxy_buffers4128k;4、启动Nginx systemctl restart nginx4、验证访问域名之后不停的刷新网页负载均衡常见问题问题一后端服务器出现了问题负载均衡依然会将请求发送过去后台服务连接超时Nginx是本身是有机制的如果出现一个节点down掉的时候Nginx会更据你具体负 载均衡的设置将请求转移到其他的节点上但是如果后台服务连接没有down掉但是返回错误异常码了 如:504、502、500,这个时候你需要加一个负载均衡的设置如下proxy_next_upstream http_500|http_502|http_503|http_504|http_404;意思是当其中一台返回错误码404,500...等错误 时可以分配到下一台服务器程序继续处理提高平台访问成功率解决模块Syntax: proxy_next_upstream error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_403|http_404|http_429|non_idempotent|off...;Default: proxy_next_upstream errortimeout;Context: http, server, location配置方式upstream www{server10.0.0.7;server10.0.0.8;}server{listen80;server_name www.tf.com;location /{proxy_pass http://www;include proxy_params;#可以配置可以写到includeproxy_next_upstream http_500 http_502 http_503 http_504 http_403 http_404;}}Nginx负载均衡后端状态后端 Web 服务器在前端 Nginx 负载均衡调度中的状态参数名说明down当前的server暂时不参与负载均衡backup预留的备份服务器仅当非backup服务器全部故障时才会接收请求max_fails允许请求失败的次数超出次数后触发fail_timeoutfail_timeout经过max_fails次失败后服务暂停接收请求的时间超时后会重新检测max_conns限制该server最大可接收的并发连接数避免单台服务器因连接过多过载测试 down 状态, 测试该 Server 不参与负载均衡的调度修改lb01的配置文件[rootlb01 conf.d]# cat proxy.confupstream www{server10.0.0.7:80 down;server10.0.0.8:80;}server{listen80;server_name www.tf.com;location /{proxy_pass http://www;include proxy_params;}}重启服务[rootlb01 conf.d]# systemctl restart nginx访问看看是否可以访问到web1 现象只能访问web02了测试 backup修改配置文件[rootlb01 conf.d]# cat proxy.confupstream www{server10.0.0.7:80 backup;server10.0.0.8:80;}重启服务[rootlb01 conf.d]# systemctl restart nginx只能访问web02测试 max_fails 失败次数和 fail_timeout 多少时间内失败多少次则标记 down修改lb01配置文件[rootlb01 conf.d]# cat proxy.confupstream www{server10.0.0.7:80max_fails2fail_timeout10s;server10.0.0.8:80;}测试 max_conns 最大 TCP 连接数upstream load_pass{server10.0.0.7:80;server10.0.0.8:80max_conns1;}Nginx负载均衡调度算法调度算法概述轮询按时间顺序逐一将请求分配到不同的后端服务器Nginx 负载均衡默认算法weight加权轮询基于轮询的加权优化weight 值越大后端服务器被分配到的访问请求几率越高ip_hash每个请求按访问 IP 的哈希结果分配来自同一 IP 的请求会固定访问某一个后端服务器url_hash按照访问 URL 的哈希结果分配请求同一个 URL 会定向到同一个后端服务器least_conn最少连接数算法优先将请求分发到当前活跃连接数最少的后端服务器url_hashNginx 默认不内置该算法需安装ngx_http_upstream_hash模块才能使用也可通过第三方模块实现。ip_hash能解决会话保持问题比如用户登录状态但需注意如果某台后端服务器故障需手动标记为down否则哈希结果会错乱Nginx 1.3.1 版本可自动处理故障节点。least_conn适合后端服务器性能不均、请求连接时长差异大的场景比如有动态请求的 Web 服务。Nginx 负载均衡 [weight] 权重轮询具体配置upstream www{server10.0.0.7:80weight5;server10.0.0.8:80;}Nginx 负载均衡 ip_hash 具体配置, 不能和weight一起使用upstream www{ip_hash;server10.0.0.7:80;server10.0.0.8:80;}Nginx负载均衡TCP实践配置Nginx4层负载均衡实现如下需求1.通过访问负载均衡的5555端口实际是后端的web01的22端口在提供服务。2.通过访问负载均衡的6666端口实际是后端的mysql的3306端口在提供服务。创建相关目录[rootlb01 ~]# mkdir -p /etc/nginx/conf.c[rootlb01 ~]# vim /etc/nginx/nginx.conf# 在events层下面http层上面配置includeinclude /etc/nginx/conf.c/*.conf;编辑配置文件[rootlb01 conf.d]# cd /etc/nginx/conf.c/[rootlb01 conf.c]# cat stream.confstream{#1.定义虚拟资源池upstreamssh{server10.0.0.7:22;}upstream mysql{server10.0.0.51:3306;}#2.调用虚拟资源池server{listen5555;proxy_connect_timeout 1s;proxy_timeout 300s;proxy_passssh;}server{listen6666;proxy_connect_timeout 1s;proxy_timeout 300s;proxy_pass mysql;}}重启服务[rootlb01 conf.c]# systemctl restart nginx测试确认lb上的端口是否开了[rootlb01 conf.c]# ss -tnlp | grep nginxLISTEN0511*:6666 *:* users:((nginx,pid17700,fd7),(nginx,pid17699,fd7),(nginx,pid17698,fd7))LISTEN0511*:80 *:* users:((nginx,pid17700,fd8),(nginx,pid17699,fd8),(nginx,pid17698,fd8))LISTEN0511*:5555 *:* users:((nginx,pid17700,fd6),(nginx,pid17699,fd6),(nginx,pid17698,fd6))检查web01上已经开了22[rootweb01 ~]# ss -tnlp | grep 22LISTEN0128*:22 *:* users:((sshd,pid884,fd3))LISTEN0128[::]:22[::]:* users:((sshd,pid884,fd4))验证 访问负载均衡5555端口验证代理后端 web01 的22端口SSH 服务Nginx动静分离动静分离,通过中间件将动态请求和静态请求进行分离, 分离资源, 减少不必要的请求消耗, 减少请求延时。 好处: 动静分离后, 即使动态服务不可用, 但静态资源不会受到影响相关实验可以看 《负载均衡-动静分离实验》

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询