看板 Linux 關於我們 聯絡資訊
想要請問的問題是「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呢? 還是我現在的方向錯了呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.16.181 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1476587378.A.E97.html
hn12404988: 補充:是browser的xmlhttprequest的POST 10/16 11:20
kenduest: 自己實作 http server 嗎?有處理細節流程嗎? 10/16 13:08
kenduest: 比方 http 1.0 與 1.1 連線溝通的差異 10/16 13:13
hn12404988: 我知道1.0和1.1,但我不知道原來我也要作這個 10/16 13:23
hn12404988: 我以為Nginx會幫我作這方面的東西,那看來差有點遠 10/16 13:24
hn12404988: 其實只是很簡單的accept connection,然後send回去 10/16 13:25
hn12404988: https://github.com/hn12404988/Neural_Socket 10/16 13:27
hn12404988: code在neural_socket資料夾裡的socket_server.cpp 10/16 13:28
hn12404988: 從80行開始看,就是簡單開新thread, 在send回去 10/16 13:28
kenduest: 沒有實做1.1的話溝通完就需要切斷連線 10/16 13:37
kenduest: proxy_pass 當時候 nginx 是 client, 你的程式是 server 10/16 13:48
kenduest: ,nginx 請求就是標準方式 10/16 13:48
soem: nginx的proxy_pass是標準的http request,你要的應該不是這個 10/16 13:58
hn12404988: 了解了解,謝謝提醒,那我再去查其他pass方式 10/16 14:45
kenduest: 樓主只是要純 tcp proxy 還是 10/16 14:57
hn12404988: 對,想要Nginx單純tcp/unix socket傳送資訊就好 10/16 15:54
kenduest: nginx 可以支援,官方文件有說明 10/16 16:36
kenduest: 不過一般是 tcp socket 非 unix domain socket 10/16 16:36
kenduest: 您自己測試 unix:/path/file 這種語法看看,我自己沒有 10/16 16:39
kenduest: 這樣用過就是 10/16 16:39
hn12404988: proxy_pass要用http://unix:/path/file 10/16 17:05
hn12404988: fastcgi_pass 可以直接 unix:/path/file 10/16 17:06
hn12404988: 謝謝你的建議,我覺得我要去看一些http傳輸協定的東西 10/16 17:06
hn12404988: 或是nginx有其他的_pass,我還沒研究 10/16 17:07
soem: 其實偷懶的作法就是用python/ruby當http server那層,再接上 10/17 00:42
soem: 你的code就完成了這樣XD 10/17 00:43
soem: 甚至連socket都不太需要寫,直接call就好 10/17 00:44