【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

Nginx 101:深入了解正向和反向代理 (nginx1000并发就挂了)

用户投稿2024-04-13热门资讯28

引言

Nginx是一个流行的高性能Web服务器,它提供了广泛的功能,包括正向和反向代理。正向代理和反向代理是两种不同的技术,它们在网络环境中具有不同的用途。本文将深入探讨这两种代理类型,包括它们的优点、缺点和具体用法。

正向代理

定义正向代理是一个服务器,它作为客户端和目标服务器之间的中间人。客户端向正向代理发送请求,正向代理再将请求转发到目标服务器。正向代理可以修改请求,例如在客户端和目标服务器之间添加身份验证或加密。优点增强安全性:正向代理可以隐藏客户端的真实IP地址,从而提高匿名性和安全性。内容过滤:正向代理可以过滤特定类型的流量,例如阻止对恶意网站或不适当内容的访问。负载均衡:正向代理可以将流量分配给多个目标服务器,从而提高性能和可靠性。缺点性能开销:正向代理会引入额外的网络开销,从而可能导致延迟和带宽问题。有限的控制:客户端没有对正向代理的控制权,因此无法完全自定义其行为。用法正向代理通常用于以下情况:通过防火墙或内容过滤器访问受限内容提高匿名性实施内容过滤提供负载均衡

反向代理

定义反向代理是一个服务器,它作为多个目标服务器和单个客户端之间的中间人。客户端向反向代理发送请求,反向代理再将请求路由到适当的目标服务器。反向代理还可以缓存内容,从而提高性能和减少对目标服务器的负载。优点提高性能:反向代理可以通过缓存内容来提高性能,这消

nginx服务器有什么作用以及什么是反向代理

一:Nginx作为正向代理服务器:

1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代理不支持从外网向内网访问资源,一般很少用,经本人测试,效果也不好,有很多页面打不开,在网络搜索的页面也无法返回。

server {server_name localhost;resolver 202.106.0.20 8.8.8.8; #只能有一个resolve,但是可以用空格隔开,继续写下一个resolver_timeout 5s;listen 8080;location / {proxy_pass$scheme://$http_host/$request_uri;proxy_set_header Host $http_host;proxy_buffers 256 4k;proxy_max_temp_file_size 0;proxy_connect_timeout 30;proxy_cache_valid 200 302 10m;proxy_cache_valid 301 1h;proxy_cache_valid any 1m;}}

2.错误码502 :Nginx作为代理服务器向后端转发请求过程中超时。

二:Nginx作为反向代理服务器:

反向代理:反向代理也叫reverse proxy,指的是代理外网用户的请求到内部的指定web服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。

反向代理的常用指令:

_pass:用来设置将请求转发给的后端服务器的主机,可以是主机名、IP地址:端口的方式,也可以代理到通过upstream设置的主机组,如下:

upstream webserver {#ip_hash;server 192.168.0.201 weight=1 max_fails=2 fail_timeout=2;server 192.168.0.202 weight=1 max_fails=2 fail_timeout=2;server 127.0.0.1:9008 backup;}server {server_name ;#access_log logs/ main;location / { #静态网页在本机roothtml;index ;}location ~* ^/form { #指定目录在后端服务器proxy_pass#此处后面不能加/,如果加了会提示语法错误proxy_set_header X-Real-IP $remote_addr;}}

2:proxy_hide_header:用于nginx服务器作为反向代理的时候,在返回给客户端http响应的时候,隐藏后端服务版本(如php版本)的信息,可以设置在http/server或location块,如下:

Nginx会将上游服务器的响应转发给客户端,但默认不会转发以下HTTP头部字段:Date、Server、X-Pad和X-Accel-*。使用proxy_hide_header后可以任意地指定哪些HTTP头部字段不能被转发。例如:

proxy_hide_header Cache-Control; proxy_hide_header MicrosoftOfficeWebServer;

注:如果是nginx直接作为web服务器,要隐藏版本信息的话,使用fastcgi_hide_header:

3:proxy_pass_header:与proxy_hide_header功能相反,proxy_pass_header会将原来禁止转发的header设置为允许转发,可以设置在http/server或location块例如:

proxy_pass_headerX-Accel-Redirect;

4:proxy_pass_request_body:是否向后端服务器发送HTTP包体部分,可以设置在http/server或location块,如下:

proxy_pass_request_body on|off; #默认为on

5:proxy_pass_request_headers:是否将客户端的请求头部转发给后端服务器,可以设置在http/server或location块,如下:

proxy_pass_request_headers on | off; #默认为on

6:proxy_set_header:可以更改或添加客户端的请求头部信息内容,并转发之后端服务器,比如在后端服务器想要获取客户端的真实IP的时候,就要更改每一个报文的头部,如下:

proxy_set_header HOST $remote_addr; #添加HOST到报文头部,其值为客户端的公网IP地址

7:proxy_set_body:更改nginx服务器接收到的客户端请求的请求内容,然后将修改后的请求转发给后端的服务器,用法如下:

proxy_set_body value; #其中value为要修改的目标内容,可以是变量、文本或者变量的组合。

8:proxy_ip:Nginx 0.8.22版本及以上支持此功能,用于Nginx配置了多个基于域名或IP的主机的情况下,可以指定代理连接到特定的主机处理,就是强制将客户端请求绑定到指定的IP地址:

proxy_bind x.x.x.x;

9:proxy_connect_timeout:配置nginx服务器与后端服务器尝试建立连接的超时时间,默认为60秒,用法如下:

proxy_connect_timeout 10s; #10s为自定义nginx与后端服务器建立连接的超时时间

10:proxy_read_time:配置nginx服务器向后端服务器或服务器组发起read请求后,等待的超时时间:

proxy_read_time 10s; #默认为60秒

11:proxy_send_time; 配置nginx项后端服务器或服务器组发起write请求后,等待的超时时间:

proxy_send_time 10s; #默认为60s

Nginx 101:深入了解正向和反向代理 (nginx1000并发就挂了) 第1张

12:proxy_http_version:用于设置nginx提供代理服务的HTTP协议的版本:

proxy_http_version 1.0|1.1;

13:proxy_method:设置nginx服务器请求后端服务器时使用的方法,一般为POST或者GET,客户端的请求方法将被忽略:

proxy_method GET|PUT;

14:proxy_ignore_client_abort:设置在客户端网络中断请求时,nginx服务器是否中断对被代理服务器的请求:

proxy_ignore_client_abort off|on; #默认为off,当客户端网络中断请求时,nginx服务器中断其对后端服务器的请求。

15:proxy_ignore_headers:设置nginx不处理后端服务器返回的数据中包含某些指定字段的报文,可以指定的有:”X-Accel-Redirect”, “X-Accel-Expires”, “Expires”或”Cache-Control”:

proxy_ignore_headers Expires;

16:proxy_redirect:修改后端服务器返回的响应头部中的location货refresh,与proxy_pass配合使用:

17:proxy_intercept_errors:设置nginx服务器返回客户端的错误状态,当后端服务器返回大于等于400的错误码的是,如果本功能是打开的,则nginx服务器返回自定义的错误页面(使用error page定义的),如果没有开启就将后端服务器返回的HTTP状态直接返回给客户端,默认为关闭:

proxy_intercept_errors on | off;

18:proxy_headers_hash_max_size:设置nginx保存HTTP报文头的hash表的上限,默认为512字节:

proxy_headers_hash_bucket_size 512;#申请nginx保存HTTP报文头的hash表的空间大小,默认为64个字节proxy_headers_hash_max_size 512; #上限server_names_hash_max_szie512; #设置服务器名称的上限server_namse_hash_bucket_size 512; #申请空间大小

19:proxy_headers_hash_bucket_size:#申请nginx保存HTTP报文头的hash表的空间大小,默认为64个字节

proxy_headers_hash_bucket_size 512; #默认为64字节

20:proxy_net_upstream:当使用了upstream的时候,可以定义在发生了特定的情况下将请求依次交给下一个组内的服务器处理,状态包括:

proxy_next_upstream http_404 http_502; //让404报错进入max_fails计数upstream online {sticky;server 172.28.70.161:8080 max_fails=0 fail_timeout=3s ;server 172.28.70.163:8080 max_fails=0 fail_timeout=3s ;check interval=3000 rise=2 fall=1 timeout=1000 type=http;check_http_send GET / HTTP/1.0\r\n\r\n;check_http_expect_alive http_2xx http_3xx;}upstream backup {server 172.28.22.29:7777 max_fails=0 fail_timeout=3s;}

21:proxy_ssl_session_reuse:配置是否基于SSL协议与后端服务器建立连接,如下:

proxy_ssl_session_reuse on | off;

nginx反向代理配置详解(nginx反向代理配置详解-csdn)

1.简介本篇博文是《nginx实现动态/静态文件缓存-技术流ken》的二部曲。 将详细介绍nginx如何实现反向代理以及负载均衡技术,并辅以实战案例。 反向代理--“反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 ”负载均衡--“网络专用术语,负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 ”实现反向代理1.几个概念反向代理:在收到客户端请求之后,会修目标IP地址和端口正向代理:在收到客户端请求之后,会修源IP地址和端口上游服务器:代理服务器后端的哪些真正给客户端提供服务的节点,这样的服务器称之为上游服务器下游服务器:客户端就是下游节点2.反向代理指令模块:nginx_http_proxy_module指令proxy_pass:指定上游服务器的ip和端口proxy_set_header:指定在重新封装请求报文的时候,添加一个新的首部Syntax:proxy_passURL;Default:—Context:location,ifinlocation,limit_except例子:proxy_pass补充二补充2:如果location中使用了模式匹配,那么,location中的url会直接补充到代理节点的后面.此时,上游服务器的的后面不能有任何内容,包括/location~${proxy_pass

Nginx相关知识点

Nginx是lgor Sysoev为俄罗斯访问量第二的站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

自行安装

正向代理:代理服务器站在客户端那边就是正向代理; 反向代理:代理服务器站在原始服务器那边就是反向代理; 详解参考点击 Nginx正向代理与反向代理

Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。 Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。 并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台机器web程序iis关闭,也就是说web不能访问,那么nginx服务器分发请求还是会给这台不能访问的web服务器,如果这里的响应连接时间过长,就会导致客户端的页面一直在等待响应,对用户来说体验就打打折扣,这里我们怎么避免这样的情况发生呢。这里我配张图来说明下问题。

如果负载均衡中其中web2发生这样的情况,nginx首先会去web1请求,但是nginx在配置不当的情况下会继续分发请求道web2,然后等待web2响应,直到我们的响应时间超时,才会把请求重新分发给web1,这里的响应时间如果过长,用户等待的时间就会越长。

下面的配置是解决方案之一:

如果使用upstream指令配置了一组服务器作为被代理服务器,服务器中的访问算法遵循配置的负载均衡规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交由下一组服务器处理。

状态值可以是:error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。 内置策略: 1.轮询;2.加权轮询; hash; 扩展策略:就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

开启简单的缓存配置,只需要两个指令:proxy_cache_path和proxy_cache。 proxy_cache_path: 配置缓存的存放地址和其他的一些常用配置; proxy_cache:指令是为了启动缓存;

相关配置说明:

该指令用于定义满足条件的响应不会被保存到缓存中。在条件字符串中至少有一个条件不为空或者0,符合这样条件的响应才不会被缓存。 举例如下

其中,cookie_nocache、arg_nocache...皆为变量,可以根据你访问的匹配策略来设置,其值只有2类,0和非0;

访问匹配策略例如:

如果在此链式配置中,只要有一个值不为0,则不会cache;例如:

则不会被cache.

注:一般会配合proxy_cache_bypass共同使用;

该指令用于定义哪些情况不从cache读取,直接从backend获取资源;配置方式同proxy_no_cache。

给缓存数据定义一个键,例如

该指令用于设置缓存哪些HTTP方法,默认缓存HTTP GET/HEAD方法,不缓存HTTP POST 方法.。

设置不同响应码的缓存时间,当不指定响应码的时候,例如

只对响应码为200,301,302的访问请求资源设置缓存时间,此外可以个性化定制,例如:

此外,还可以在相应header里设置优先级更高的缓存有效时间:

不缓存包含在field的响应header,可以设置的值有:“X-Accel-Redirect”, “X-Accel-Expires”, “X-Accel-Limit-Rate”,“X-Accel-Buffering”, “X-Accel-Charset”, “Expires”, “Cache-Control”, “Set-Cookie” (0.8.44), and “Vary”。 如果上述的header field没有设置为忽略,则header filed中有“X-Accel-Expires”, “Expires”, “Cache-Control”, “Set-Cookie”, and “Vary”的话,响应会被缓存。

该指令用于设置缓存的最小使用次数,默认值为1

源站有问题时,nginx可以通过proxy_cache_use_stale指令开启容错能力,即使用缓存内容来响应客户端的请求。举例如下:

如上配置表示,当作为cache的NGINX收到源站返回error、timeout或者其他指定的5XX错误,并且在其缓存中有请求文件的陈旧版本,则会将这些陈旧版本的文件而不是错误信息发送给客户端。

使用NGINX,不需要建立一个RAID(磁盘阵列)。如果有多个硬盘,NGINX可以用来在多个硬盘之间分割缓存。举例如下:

在这份配置中,使用了3个独立的缓存,每个缓存专用一块硬盘,另外,3个独立的线程池也各自专用一块硬盘。

缓存之间(其结果就是磁盘之间)的负载均衡使用split_clients模块,split_clients非常适用于这个任务。 在 proxy_cache_path指令中设置 use_temp_path=off ,表示NGINX会将临时文件保存在缓存数据的同一目录中。这是为了避免在更新缓存时,磁盘之间互相复制响应数据。

打开配置文件:vim /usr/local/nginx/conf/ 日志部分内容: #access_loglogs/; 日志生成的到Nginx根目录logs/文件,默认使用“main”日志格式,也可以自定义格式。 默认“main”日志格式:

参数明细表:

查看日志命令tail -f /usr/local/nginx/logs/

打开配置文件去掉#注释见下图:

自定义某一个server配置的日志,使用“main”日志格式。

日志生成的到Nginx根目录logs/文件,默认使用“main”日志格式,也可以自定义格式。

重新读取加载Nginx配置文件:

执行命令:nginx-s reload

网上一位老师写的log文件分解的脚本

此脚本执行时间根据自己公司情况来定,可以设置默认一天执行一次;

创建crontab设置作业

设置日志文件存放目录crontab -e

*/1 * * * *sh /usr/local/software/nginx/nginx_ 此设置的为一分钟,如果设置一天自行修改;

默认的 nginx 配置文件 内容如下

示例

几个常见配置项:

注意:

惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能 每个指令必须有分号结束。

进入安装目录下的sbin

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

Nginx 101:深入了解正向和反向代理 (nginx1000并发就挂了) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
你上次访问网站的时间为:24-05-17,20:15:35 你第25访问网站的时间为:24-05-17 20:15:37