[問題] Nginx的proxy_pass問題

作者: hn12404988 (Willy)   2016-10-16 11:09:36
想要請問的問題是「Nginx的proxy_pass是不是有特定的訊息傳輸格式」
過程是這樣:(Centos 7)
以前用Nginx來proxy,中間都有經過一層library再到我的backend
例如用spawn-fcgi,再使用fcgio.h來取得傳輸資訊,過程都被其他軟體處理好
但最近我想要試試看,我自己寫的一個小小server來直接接Nginx的proxy_pass請求
只是很單純建立一個unix domain socket,Nginx也有權限使用
目前小server都有辦法拿到Nginx傳來的資訊,完整
但是使用傳統的socket send(),Ngnix會「一直等」~~
等到Nginx設定的timeout時間到了,才回傳訊息(send的訊息)
現在實驗出兩個狀況
1. server send完訊息,不關閉連線,讓連線保持
Nginx就會等到timeout,然後甚麼訊息都沒送出去,client端甚麼都沒有
2. server send完訊息,就關閉連線
Nginx等到timeout,才把訊息送給client,有訊息
所以根據以上狀況,我再猜:
是不是這訊息之間的來回,有一定的handshake或其他「確定傳完的」格式
請問這方面的資訊,要用甚麼關鍵字去找相關regulation呢?
還是我現在的方向錯了呢?
謝謝
作者: hn12404988 (Willy)   2016-10-16 11:20:00
補充:是browser的xmlhttprequest的POST
作者: kenduest (小州)   2016-10-16 13:08:00
自己實作 http server 嗎?有處理細節流程嗎?比方 http 1.0 與 1.1 連線溝通的差異
作者: hn12404988 (Willy)   2016-10-16 13:23:00
我知道1.0和1.1,但我不知道原來我也要作這個我以為Nginx會幫我作這方面的東西,那看來差有點遠其實只是很簡單的accept connection,然後send回去https://github.com/hn12404988/Neural_Socketcode在neural_socket資料夾裡的socket_server.cpp從80行開始看,就是簡單開新thread, 在send回去
作者: kenduest (小州)   2016-10-16 13:37:00
沒有實做1.1的話溝通完就需要切斷連線proxy_pass 當時候 nginx 是 client, 你的程式是 server,nginx 請求就是標準方式
作者: soem (流水)   2016-10-16 13:58:00
nginx的proxy_pass是標準的http request,你要的應該不是這個
作者: hn12404988 (Willy)   2016-10-16 14:45:00
了解了解,謝謝提醒,那我再去查其他pass方式
作者: kenduest (小州)   2016-10-16 14:57:00
樓主只是要純 tcp proxy 還是
作者: hn12404988 (Willy)   2016-10-16 15:54:00
對,想要Nginx單純tcp/unix socket傳送資訊就好
作者: kenduest (小州)   2016-10-16 16:36:00
nginx 可以支援,官方文件有說明不過一般是 tcp socket 非 unix domain socket您自己測試 unix:/path/file 這種語法看看,我自己沒有這樣用過就是
作者: hn12404988 (Willy)   2016-10-16 17:05:00
proxy_pass要用http://unix:/path/filefastcgi_pass 可以直接 unix:/path/file謝謝你的建議,我覺得我要去看一些http傳輸協定的東西或是nginx有其他的_pass,我還沒研究
作者: soem (流水)   2016-10-17 00:42:00
其實偷懶的作法就是用python/ruby當http server那層,再接上你的code就完成了這樣XD甚至連socket都不太需要寫,直接call就好
繼續閱讀
[問題] RTSP加密問題Bode123[問題] [email protected]

Links booklink

Contact Us: admin [ a t ] ucptt.com