我有Nginx作为我的前端Web服务器侦听端口80.并且某些请求,我设置了nginx来将其代理反向代理到我写的基于mochiweb的Web服务器,在端口8000听我的nginx的配置,这看起来是这样的:Nginx反向代理到自定义Mochiweb应用程序
location /mymochiserver {
proxy_pass http://127.0.0.1:8000;
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 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
现在,当我访问URL http://localhost/mymochiserver我没有看到浏览器的响应。浏览器只是说“等待本地主机”。无论何时用户连接到mymochiserver,mymochiserver都会在终端窗口中打印一些跟踪信息,现在,我确实可以看到每个我打开的用于连接此URL的浏览器窗口的跟踪信息。但是我没有看到任何我期望看到写入浏览器的输出。但是,当我直接访问URL http://127.0.0.1:8000/一切工作正常,我看到mymochiserver在浏览器上的输出。所以直接调用它就行。但是当通过nginx进行反向代理时,它似乎没有工作。任何想法可能是错的?
更新: 在我的了Mochiweb应用程序,我有几行代码:
Socket = Req:get(socket),
inet:setopts(Socket, [{active, once}]),
proc_lib:hibernate(?MODULE, feed, [Response, Userid, 1]);
它基本上是一个COMET应用程序,用户将连接到mymochiserver和服务器数据推到所有的连接客户端。如果没有数据要从服务器发送,我休眠该过程。然后当唤醒时,我会调用馈送功能发送数据。如果我删除了休眠代码,一切正常,我在浏览器中看到输出。但是,如果我休眠,它不起作用。任何想法出了什么问题?