我需要一些 linux 大师的帮助。我正在开发一个包含彗星服务器的网络应用程序。Comet 服务器在 localhost:8080 上运行,并公开 url localhost:8080/long_polling 供客户端连接。我的 webapp 在 localhost:80 上运行。
我使用 nginx 将请求从 nginx 代理到彗星服务器(localhost:80/long_polling 代理到 localhost:8080/long_polling),但是,我对这个解决方案有两个不满:
- nginx 在一分钟后给我一个 504 网关超时,即使我将每个超时设置更改为 600 秒
- 我真的不希望 nginx 必须代理到彗星服务器 - nginx 代理不是为持久连接(可能长达半小时)而构建的。我宁愿让客户端直接连接彗星服务器,让彗星服务器处理。
所以我的问题是:是否有任何 linux 技巧可以让我在不使用 nginx 代理的情况下将 localhost:8080/long_polling 暴露给 localhost:80/long_polling?一定有什么。这就是为什么我认为这个问题可能最好由 linux 大师来回答。
我需要 /long_polling 在端口 80 上公开的原因是我可以使用 AJAX 连接到它(ajax same-origin-policy)。
这是我的 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;