配置Nginx根据域名来源进行端口转发

Published: Tags: NGINX

之前笔者写了一篇「通过Nginx的端口转发提高加速器效率」的博文,现在补上额外配置。

stream {
    map $ssl_preread_server_name $domain_name {
              default  ssh;
         blog.jtwo.me  blog;
         wiki.jtwo.me  wiki;
    }
    
    upstream  ssh   { server 172.17.10.1:22; }
    upstream  blog  { server 172.17.10.2:80; }
    upstream  wiki  { server 172.17.10.3:443; }
    
    server { listen 443; listen [::]:443;
    ssl_preread on; proxy_pass $domain_name; }
    
    # 上方根据域名反代SSH/HTTP # 下方根据请求端口反代TCP #
    
    server { listen 3306; proxy_pass 172.17.10.10:3306; }
}

访问方式如下:

# SSH
ssh -v -p 443 root@ssh.jtwo.me #没有SNI
# HTTPS
curl -s https://blog.jtwo.me/phpinfo.php
curl -s https://wiki.jtwo.me/phpinfo.php
# MYSQL
mysql -u root -p -h mysql.jtwo.me -P 3306