求助, nginx 反代为什么入流量是出流量的十倍...
配置如下
#PROXY-START/
location ~* \.(php|jsp|cgi|asp|aspx)$
{
proxy_pass **original host**;
proxy_set_header Host **sent host**;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
location /h5ai/pt/transmission/
{
proxy_pass **original host**;
proxy_set_国外服务器header Host **sent host**;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
#proxy_buffering off;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
proxy_ignore_headers Set-Cookie Cache-Control expires;
add_header Cache-Control no-cache;
}
#PROXY-END/
十倍的原因大概是本地百兆,这台服务器和后端都是千兆口,本地和这台服务器都跑满了......
想要的效果是下载流量多少,入流量也是多少,该怎么设置啊...
自顶一下,这台服务器双向计费,本来是想加速访问慢的网站的..
是因为 Nginx 有 Buffer/Cache ?
是不是没设报文压缩?
加了 proxy_cache off;和 expires off;也不顶用。。。谷歌了一大堆参数加上了也没用..
proxy_ignore_headers Set-Cookie Cache-Control expires;
add_header Cache-Control no-cache;
add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
expires off;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept' always;
proxy_cache off;
proxy_redirect off;
源站和反代都开了 gzip,试了下反代关闭 gzip 也是一样
HTTP 的话,抓包看咯。
包都是正常的请求,但是不知道为什么反代 NGINX 请求的更多
抓了比对一下就知道咯
一般的网站都是访问比提交要多吧
首先你给的配置不全,另外你给的配置中的**original host**我也不知道是什么意思。在这里我拿普通反代结构来进行猜测,猜测出来的结果可能与你的情况不一样。
我们先来看一个普通反代的结构:
客户端(C) - Nginx 反向代理(P) - 网页服务器(S) 。我们来看看流量的入与出:
https://imgchr.com/i/rkVKUA
对于普通浏览型 /非上传的网站来说,上图中,0 的意思是,站在流量角度,对比一个请求与响应来说,其请求的流量几乎可以不用考虑,我们只需要关注响应的流量 x 。
从上图可见,对于 P 来说,入流量红色箭头的 0+x=x,出流量兰色箭头 0+x=x,正常情况下是相等的。
但如果发生了题主说的,入流量是出流量的 10 倍....
情况 1,10 倍扩大的入流量被添加于上图左上红箭头位置,那就是请求翻了总体流量 10 倍,又由于请求几乎为 0,这种情况下可以直接判定为,客户端向 Nginx 反向代理,发送基于请求的 ddos 了。因为请求流量几乎为 0,那么对于请求数量来说,ddos 情况下就不是仅翻 10 倍了。
情况 2,10 倍扩大的入流量被添加于上图右下红箭头位置....这种情况,要不是你家网页服务器对 Nginx 反向代理有啥意见,比如配置上出现 bug,或 nginx 本身有 bug,或网页服务器有病毒;要不就是那条网线的 S->P 的链路出问题,导致海量重传。
如果上面两种 10 倍入流量情况,都没发生,就考虑一下 10 倍缩减的出流量:
情况 3,10 倍缩减的出流量被添加于上图的右上位置,这种事情从原理上是不可能发生的,省略。
情况 4,10 倍缩减的出流量被添加于上图的左下位置,这就有意思了,对于 Nginx 反向代理的响应,客户端都直接掐断了连接,不接收响应的流量,那么这种情况,还是客户端在进行 ddos,只不过客户端的请求没那么暴力。
以上是基于你给了不全的配置 + 你的配置存在我看不懂的地方 + 我是以正常反代结构进行判断,因此猜测的结果,与你的实际情况不一样,是很正常的。
没明白为什么你会认为原因是“十倍的原因大概是本地百兆,这台服务器和后端都是千兆口”。流量和端口速度有什么关系?
十倍的流量是从哪儿看到的,
在机器上,用 iftop 自己看一下?
带宽跑满了的话就可能这样 毕竟要受硬件限制
是的,iftop 看出来的速度和各种面板统计出来的流量,出流量和入流量都是跑满,所以是十倍
非常感谢老哥的回复,删掉的是源域名和反代的域名,别的都没动。
配置很乱是因为我是在宝塔自带的反代基础上改的...自带的缓存关掉还是有很大流量差,所以又谷歌了一些关闭缓存的配置加进去...确实很乱
仔细看了一下你的回复,我感觉可能是类似情况 4,因为本地我只有百兆( c-p 这一段),然而( s-p )有千兆,所以应该是客户端接收不到那么多的流量?
十倍仅仅因为( c-p )( s-p )这两段的带宽瓶颈差异,我测试了和下载工具无关( idm/Chrome 自带等等,并且看链接记录都是只建立了一条连接,因为一条就能跑满),应该能排除 1 。
线路很好,本地到反代能单线程跑满百兆,反代到真实服务器能跑满千兆,应该不存在链路问题。
和后端网页服务器也没有关系,我测试反代别的网站,同样会出现两头跑满,即入流量是出流量十倍的情况。应该能排除情况 2
所以说对于一个反代服务器,我感觉不会出现类似情况 4 的吧。即客户端接收的流量小于反代服务器接收的流量。
我换 Apache 试一试吧,感觉 nginx 玩不转...