2つの異なるサーバーの前でnginxプロキシを使用しようとしています
example.com、example1.com >> nginx 10.0.0.1 >>>> 10.0.0.2、10.0.0.3
stream {
server {
listen 1935;
proxy_pass 10.0.0.2:1936;
proxy_protocol on;
}
server {
listen 1935;
proxy_pass 10.0.0.3:1936;
proxy_protocol on;
}
}
私はtcpをチェックしました ロードバランスガイド ですが、それを機能させる方法を見つけることができませんでした
TCP/UDPプロトコルにはserver_name
はありませんが、$server_addr
に基づいてトラフィックを別のアップストリームに転送できます。私の例はここにあります: https://stackoverflow.com/a/44821204/508527
私はnginxを使用してこれを行うことが可能であるとは思わない。ただし、これはHAproxyで簡単に実行できます。 HAProxyは、TLSプロトコルの拡張であるSNI(サーバー名表示)に基づいて暗号化されたトラフィックをパススルーできます。
./ haproxy/haproxy.cfg
defaults
maxconn 1000
mode http
log global
option dontlognull
timeout http-request 5s
timeout connect 5000
timeout client 2000000 # ddos protection
timeout server 2000000 # stick-table type ip size 100k expire 30s store conn_cur
frontend https
bind *:443
mode tcp
option tcplog
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
use_backend app1-servers if { req.ssl_sni -i example1.com } # <--- specify domain name here
use_backend app2-servers if { req.ssl_sni -i example2.com }
backend app1-servers
mode tcp
balance roundrobin
option ssl-hello-chk
server server1 10.0.0.2:443 # <--- specify IP here
backend app2-servers
mode tcp
balance roundrobin
option ssl-hello-chk
server server1 10.0.0.3:443
Nginxの tcpロードバランシングページの例によると
この例を試してください:
stream {
upstream rtmp_servers {
least_conn;
server 10.0.0.2:1935;
server 10.0.0.3:1935;
}
}
server {
listen 1935;
server_name example.com, example1.com;
proxy_pass rtmp_servers;
}
global
log 127.0.0.1 local0 debug
defaults
log global
listen l1
bind 0.0.0.0:443
mode tcp
timeout connect 4000
timeout client 180000
timeout server 180000
server swarm_node1 x.x.1.167:443
server swarm_node2 x.x.1.168:443
server swarm_node3 x.x.1.169:443
使用 server_name
ディレクティブは、特定のリクエストに使用されるサーバーブロックを決定します。
server {
listen 1935;
server_name example.com;
location / {
proxy_pass 10.0.0.1:1936;
# the usual proxy_* stuff
}
}
server {
listen 1935;
server_name example1.com;
location / {
proxy_pass 10.0.0.2:1936;
# the usual proxy_* stuff
}
}