我有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和服務器數據推到所有的連接客戶端。如果沒有數據要從服務器發送,我休眠該過程。然後當喚醒時,我會調用饋送功能發送數據。如果我刪除了休眠代碼,一切正常,我在瀏覽器中看到輸出。但是,如果我休眠,它不起作用。任何想法出了什麼問題?