1. 把nginx改為一個普通的tcp伺服器,應用層協議自己定義,有可行性嗎
有可行性,但不高。
nginx代碼不少,且近乎沒有文檔,連開發個nginx插件都麻煩的要回死。只有少量API文檔答,但沒有解釋核心概念和流程。
且nginx是基於回調模型的。如果只是自己寫個定製協議的伺服器,大不了直接在socket上加epoll就是了。沒必要再去招惹nginx。nginx並不會在這個過程里帶給你什麼功能上的優勢,反倒要花大量時間去學nginx的內部實現。這是得不償失的。
2. ngnix tcp 一個鏈接能處理多少請求
http {
keepalive_timeout 65;
client_header_timeout 10;
client_body_timeout 10;
send_timeout 10;
釋:
keepalive_timeout:設置客戶端連接保持活動的超時時間。在超過這個時間之後,伺服器會關回閉該連接。
client_header_tomeout:設置客戶端請求答頭讀取超時時間。如果超過這個時間,客戶端還沒有發送任何數據,Nginx將返回「Request time out(408)」錯誤。
client_body_timeout:設置客戶端請求主體讀取超時時間。如果超過這個時間,客戶端還沒有發送任何數據,Nginx將返回「Request time out(408)」錯誤,默認值是60。
send_timeout:設定響應客戶端的超時時間。這個超時僅限於兩個鏈接活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關閉連接。
3. 把nginx改為一個普通的tcp伺服器,應用層協議自己定義,有可行性嗎
TCP---傳輸控復制協議,提供的是面向連接、可制靠的位元組流服務。當客戶和伺服器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。
UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸數據報前不用在客戶和伺服器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快
4. nginx最大連接數如何優化,nginx的tcp
我現來在在windows xp下配置nginx 但是源最大並發連接數 只能配到最高64. 我想提高最大並發連接數。查閱資料得到結果是 由於windows的文件描述符的配置過低造成最大並發數無法提高。 然後我就去修改 windows/system32/config.nt中的files=40 =》file
5. nginx最新支持TCP和UDP有什麼用
根據前文Nginx tcp proxy mole試用的設置,在測試環境中發現tcp連接經常掉線。在該項目站點上找到一個issue,也談論這件事情,不過別人用在web socket協議上。其實就是少了幾個設置,README的配置不能用於生產環境。我的配置如下,現在工作正常了:tcp { timeout 1d; proxy_read_timeout 10d; proxy_send_timeout 10d; proxy_connect_timeout 30; upstream tcpend { server 192.168.1.55:7778; server 192.168.1.58:7778; check interval=60000 rise=2 fall=5 timeout=10000 type=tcp; } server { server_name 192.168.1.56; listen 192.168.1.56:7777; proxy_pass tcpend; so_keepalive on; tcp_nodelay on; } }
6. nginx支持TCP代理有什麼作用
比如Java和PHP。這類伺服器(如JBoss和PHP-FPM)的IO處理能力往往不高。
Nginx有個好處是它會把Request在讀取完整之內前buffer住,這樣交給後容端的就是一個完整的HTTP請求,從而提高後端的效率,而不是斷斷續續的傳遞(互聯網上連接速度一般比較慢)。
同樣,Nginx也可以把response給buffer住,同樣也是減輕後端的壓力。
7. nginx支持TCP代理有什麼作用
通過這個模塊,代理後端其它協議應用,如mysql, nosql之類的
比如用Node.JS寫了一些版TCP服務,那麼Nginx就可以權給這些Node.JS做TCP代理,比如開啟多個Node.JS監聽不同的埠,經過Nginx TCP代理到upstream實現負載均衡,Nginx比Haproxy的優勢還在於Nginx能夠提供HTTP/HTTPS服務,可以處理靜態資源,或者把一些其他請求交給其他語言來處理,比如可以把一些輸出HTML頁面的請求fastcgi_pass給PHP-FPM處理,總而言之,Nginx更像是在做一個可擴展的Web開發系統.另外,Nginx已經支持WebSocket反向代理,而移動瀏覽器對HTTP上的全雙工通信WebSocket的支持還是不錯的,只是還沒有足夠成熟.
8. 把nginx改為一個普通的tcp伺服器,應用層協議自己定義,有可行性嗎
通模塊代理端其協議應用mysql, nosql類
比用Node.JS寫些TCP服務,Nginx給些Node.JS做TCP代理,比啟Node.JS監聽同回埠,經Nginx TCP代理upstream實現負載答均衡
9. nginx怎麼代理tcp的應用
1. 安裝
1
2
3
4
5
6
# wget http://nginx.org/download/nginx-1.4.4.tar.gz
# tar zxvf nginx-1.4.4.tar.gz
# cd nginx-1.4.4
# ./configure --add-mole=/path/to/nginx_tcp_proxy_mole
# make
# make install
2. 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
http {
listen 80;
location /status {
check_status;
}
}
tcp {
upstream cluster_www_ttlsa_com {
# simple round-robin
server 127.0.0.1:1234;
check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
#check interval=3000 rise=2 fall=5 timeout=1000 type=http;
#check_http_send "GET / HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx;
}
server {
listen 8888;
proxy_pass cluster_www_ttlsa_com;
}
}
這會出現一個問題,就是tcp連接會掉線。原因在於當服務端關閉連接的時候,客戶端不可能立刻發覺連接已經被關閉,需要等到當Nginx在執行check規則時認為服務端鏈接關閉,此時nginx會關閉與客戶端的連接。
3. 保持連接配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
http {
listen 80;
location /status {
check_status;
}
}
tcp {
timeout 1d;
proxy_read_timeout 10d;
proxy_send_timeout 10d;
proxy_connect_timeout 30;
upstream cluster_www_ttlsa_com {
# simple round-robin
server 127.0.0.1:1234;
check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
#check interval=3000 rise=2 fall=5 timeout=1000 type=http;
#check_http_send "GET / HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx;
}
server {
listen 8888;
proxy_pass cluster_www_ttlsa_com;
so_keepalive on;
tcp_nodelay on;
}
}
10. nginx tcp負載均衡,一台後端服務當掉,另一個能自動接管如何實現
fall=5 改成 fall=1
interval=1000 改成 interval=10000
再試