首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >彗星的nginx代理

彗星的nginx代理
EN

Stack Overflow用户
提问于 2009-07-21 17:03:33
回答 7查看 14.1K关注 0票数 15

我需要一些linux专家的帮助。我正在开发一个包含彗星服务器的webapp应用程序。comet服务器在localhost:8080上运行,并为要连接的客户端公开url localhost:8080/long_轮询。我的webapp运行在本地主机上:80。

我使用nginx代理从nginx到comet服务器的请求(localhost:80/long_轮询代理到localhost:8080/long_轮询),但是,对于这个解决方案,我有两个抱怨:

  1. nginx为我提供了504网关超时时间--一分钟后,即使我将每次超时设置为600秒
  2. ,我也不希望nginx必须代理到comet服务器-- nginx代理不是为持久连接构建的(可能长达半个小时)。我宁愿允许客户机直接连接到comet服务器,并让comet服务器处理它。

所以我的问题是:在不使用nginx代理的情况下,是否有允许我将localhost:8080/long_轮询公开给localhost:80/long_轮询的linux技巧?一定有什么东西。这就是为什么我认为这个问题最好由linux专家来回答。

我需要在端口80上公开/long_polling的原因是为了能够使用AJAX连接到它(ajax相同来源-策略)。

这是我的nginx proxy.conf供参考:

代码语言:javascript
运行
复制
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;
client_max_body_size        10m;
client_body_buffer_size     128k;
proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
proxy_buffer_size           4k;
proxy_buffers               4 32k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;
send_timeout                600;
proxy_buffering             off;
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-07-21 17:26:41

我不认为这是可能的。

localhost:8080/long_pollingURI ..。更确切地说,应该是http://localhost:8080/long_polling ..。在HTTP中,URI将被解析为请求/long_polling,将80端口移植到域'localhost‘.也就是说,打开到127.0.0.1:80的tcp连接,然后发送

代码语言:javascript
运行
复制
GET /long_polling HTTP/1.1
Host: localhost:8080

加上一些额外的HTTP头..。我还没听说,港口可能会被捆绑在一起.

实际上,如果我理解的话,nginx被设计成一个可伸缩的代理.此外,他们声称他们需要2.5MB的10000 HTTP空闲连接.所以这不应该是个问题。

你用的是什么彗星服务器?你能让彗星服务器代理一个网络服务器吗?正常的http请求应该被快速处理..。

格列茨

back2dos

票数 5
EN

Stack Overflow用户

发布于 2009-07-22 19:18:36

这是我的nginx.conf和proxy.conf。但是,请注意,proxy.conf太过分了--我只是在尝试调试程序时设置了所有这些设置。

/etc/nginx/nginx.conf

代码语言:javascript
运行
复制
worker_processes  1;                                                                                                                                     
user www-data;

error_log  /var/log/nginx/error.log debug;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include /etc/nginx/proxy.conf;

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  600;
    tcp_nodelay        on;

    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

/etc/nginx/proxy.conf

代码语言:javascript
运行
复制
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;
client_max_body_size        10m;
client_body_buffer_size     128k;
proxy_connect_timeout       6000;
proxy_send_timeout          6000;
proxy_read_timeout          6000;
proxy_buffer_size           4k;
proxy_buffers               4 32k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;
send_timeout                6000;
proxy_buffering             off;
proxy_next_upstream error;
票数 7
EN

Stack Overflow用户

发布于 2009-07-22 15:03:20

我已经成功地让这件事生效了。谢谢你们所有人。nginx是504超时的原因是一个愚蠢的原因:我没有像这样在我的nginx.conf中包括nginx.conf:

代码语言:javascript
运行
复制
include /etc/nginx/proxy.conf;

因此,我将nginx作为彗星服务器的前端代理。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1160454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档