免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8975 | 回复: 12
打印 上一主题 下一主题

[proxy] Nginx 反向代理参数请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-25 15:35 |只看该作者 |倒序浏览
Nginx在做反向代理到后端的应用服务器,在运用过程中遇到一个问题,就是一个程序在调用一个应用时,通过Nginx反向代理调用就非常慢,直接调用后端应用服务器就非常快!

                        proxy_next_upstream error;
                        client_max_body_size 50m;
                        client_body_buffer_size 256k;
                        proxy_connect_timeout 10;
                        proxy_send_timeout 60;
                        proxy_read_timeout 60;
                        proxy_buffer_size 16k;
                        proxy_buffers 8 128k;
                        proxy_busy_buffers_size 256k;
                        proxy_temp_file_write_size 256k;

如果不添加以上配置,Nginx的默认配置参数会是多大呢?

第二个问题:

从Nginx反向代理到varnish时,在varnish 中看到的日志全是127.0.0.1的,但在nginx已经添加了那三行:
server {
        listen               80;
        server_name    static.chinarenservice.com;       
        access_log  off;       
        location / {
                proxy_pass      http://snsstatic;
                proxy_redirect        off;
                proxy_set_header        Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Is-EDU  0;
                        }
        }


varnishlog:

127.0.0.1 - - [25/Dec/2008:16:17:49 +0800] "GET http://static.chinarenservice.com/file/util.js HTTP/1.0" 200 46095 "http://ww
w.chinarenservice.com/profile/edit.go" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; MAXTHON 2.0)"


以上问题有可能是什么原因导致?请教!

[ 本帖最后由 myfreeke 于 2008-12-25 16:18 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-12-25 19:55 |只看该作者
你是希望日志里记录的IP不是127.0.0.1么?希望记录的是用户IP?

论坛徽章:
0
3 [报告]
发表于 2008-12-26 08:37 |只看该作者

回复 #2 zysno1 的帖子

对!

论坛徽章:
0
4 [报告]
发表于 2008-12-26 11:09 |只看该作者
这个要改log_format的。

proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

这个只是把client ip记录在x-forwarded-for这个header里。

参考一下这个吧

#set logs

log_format x '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" $http_x_forwarded_for';

access_log /Data/logs/x.com-access.log x;

论坛徽章:
0
5 [报告]
发表于 2008-12-26 11:10 |只看该作者
另外,如果用户使用了代理,或者你的服务器有CDN,那么x-forwarded-for这个header是一个数组。而不是一个ip。

论坛徽章:
0
6 [报告]
发表于 2008-12-26 11:49 |只看该作者

回复 #5 zysno1 的帖子

感谢了!修改一下测试中!

论坛徽章:
0
7 [报告]
发表于 2008-12-26 12:03 |只看该作者

回复 #4 zysno1 的帖子

还有一条不明白的地方:
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

这个只是把client ip记录在x-forwarded-for这个header里。

我在nginx反向代理上配置这一行,目地就是在Nginx上将客户端的IP写在header头中转发给后端的varnish 缓存服务器,那缓存服务器在收到请求后,应该会在varnish 日志中记录的IP为用户的IP,而非Nginx的IP.

请问是这样理解吗?

论坛徽章:
0
8 [报告]
发表于 2008-12-26 14:23 |只看该作者

回复 #7 myfreeke 的帖子

同理,需要varnish也要能够记录x-forwarded-for这个header

论坛徽章:
0
9 [报告]
发表于 2008-12-26 16:13 |只看该作者
我根据官方的提示,添加了以下行:
sub vcl_recv {
  # Add a unique header containing the client address
  remove req.http.X-Forwarded-For;
  set    req.http.X-Forwarded-For = client.ip;
  # [...]
}

是否有错呢?

论坛徽章:
0
10 [报告]
发表于 2008-12-26 16:37 |只看该作者
varnish我没用过。

你自己看看得到的实际日志不就知道了:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP