我需要一些linux专家的帮助。我正在开发一个包含彗星服务器的webapp应用程序。comet服务器在localhost:8080上运行,并为要连接的客户端公开url localhost:8080/long_轮询。我的webapp运行在本地主机上:80。
我使用nginx代理从nginx到comet服务器的请求(localhost:80/long_轮询代理到localhost:8080/long_轮询),但是,对于这个解决方案,我有两个抱怨:
所以我的问题是:在不使用nginx代理的情况下,是否有允许我将localhost:8080/long_轮询公开给localhost:80/long_轮询的linux技巧?一定有什么东西。这就是为什么我认为这个问题最好由linux专家来回答。
我需要在端口80上公开/long_polling的原因是为了能够使用AJAX连接到它(ajax相同来源-策略)。
这是我的nginx proxy.conf供参考:
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;发布于 2009-07-21 17:26:41
我不认为这是可能的。
localhost:8080/long_polling是URI ..。更确切地说,应该是http://localhost:8080/long_polling ..。在HTTP中,URI将被解析为请求/long_polling,将80端口移植到域'localhost‘.也就是说,打开到127.0.0.1:80的tcp连接,然后发送
GET /long_polling HTTP/1.1
Host: localhost:8080加上一些额外的HTTP头..。我还没听说,港口可能会被捆绑在一起.
实际上,如果我理解的话,nginx被设计成一个可伸缩的代理.此外,他们声称他们需要2.5MB的10000 HTTP空闲连接.所以这不应该是个问题。
你用的是什么彗星服务器?你能让彗星服务器代理一个网络服务器吗?正常的http请求应该被快速处理..。
格列茨
back2dos
发布于 2009-07-22 19:18:36
这是我的nginx.conf和proxy.conf。但是,请注意,proxy.conf太过分了--我只是在尝试调试程序时设置了所有这些设置。
/etc/nginx/nginx.conf
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
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;发布于 2009-07-22 15:03:20
我已经成功地让这件事生效了。谢谢你们所有人。nginx是504超时的原因是一个愚蠢的原因:我没有像这样在我的nginx.conf中包括nginx.conf:
include /etc/nginx/proxy.conf;因此,我将nginx作为彗星服务器的前端代理。
https://stackoverflow.com/questions/1160454
复制相似问题