碰到一種場景,使用nginx進行反向代理tcp埠,網上大部門的設定都是一個埠代理一個埠,沒有一個埠通過域名代理後端多個埠的情況。
修改nginx.conf
stream {
map $ssl_preread_server_name $name {
mysql.test.com mysql;
redis.test.com redis;
default https_default_backend;
}
upstream mysql{
server 10.0.0.3:3306;
}
upstream redis{
server 10.0.0.4:6379;
}
upstream https_default_backend {
server 127.0.0.1:443;
}
server {
listen 10.0.0.1:443;
proxy_pass $name;
ssl_preread on;
}
}
stream 模組可能會沒有。搜尋下 nginx
新增 stream
模組即可。
stream 是一個單獨的模組,不需要放在nginx-http
配置中,可以放在nginx.conf
的最後。
也可以這樣配置
stream {
upstream mysql{
server 10.1.5.3:3306;
}
upstream redis{
server 10.1.5.4:6379;
}
map $server_addr $bane {
192.168.168.238 mysql;
192.168.168.239 redis;
}
server {
listen 80;
proxy_pass $name;
}
}
只需要把map中引數變成域名。
本作品採用《CC 協議》,轉載必須註明作者和本文連結