Nginx同ip 端口复用/分流的方法

你可能会碰到这个程序要用 443 端口,那个程序也要使用 443 的情况。这时候就要用到 nginx 的 stream 进行分流了。

假设有 web1,web2 两个都要用到 443 端口。则配置方法如下:

nginx.conf 配置文件

在 nginx 的末尾加上下面代码即可。

stream {
    map $ssl_preread_server_name $upstream {
        web1.moeelf.com web1;
        web2.moeelf.com web2;
        default web;
    }
 
    log_format stream '$remote_addr [$time_local] [$ssl_preread_server_name] [$upstream] $status $bytes_sent $bytes_received $session_time';
    access_log /var/log/nginx/stream.log stream;
 
    upstream web1 {
        server web1:65531;
    }
    upstream web2 {
        server web2:65532;
    }
    upstream web {
        server nginx:4433;
    }
    server {
        listen 443 reuseport;
        listen [::]:443 reuseport;
        proxy_pass $upstream;
        ssl_preread on;
    }
}

虚拟主机配置文件

将下面代码保存为sni.conf文件,放到虚拟主机目录。nginx安装方式不一样,放的位置会不一样。一般位于 /etc/nginx/conf.d//usr/local/nginx/conf/vhost/ 下面。

server {
    listen 65531 ssl http2 reuseport;
    server_name web1.moeelf.com;
 
    ssl_certificate       /etc/nginx/ssl/web1.moeelf.com/fullchain.cer;
    ssl_certificate_key   /etc/nginx/ssl/web1.moeelf.com/web1.moeelf.com.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
    ssl_prefer_server_ciphers on;
 
    #log_format stream '$remote_addr [$time_local] [$ssl_preread_server_name] [$route] $status $bytes_sent $bytes_received $session_time';
    access_log /var/log/nginx/web1.moeelf.com.log;
}
server {
    listen 65532 ssl http2 reuseport;
    server_name web2.moeelf.com;
 
    ssl_certificate       /etc/nginx/ssl/web2.moeelf.com/fullchain.cer;
    ssl_certificate_key   /etc/nginx/ssl/web2.moeelf.com/web2.moeelf.com.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
    ssl_prefer_server_ciphers on;
 
    #log_format stream '$remote_addr [$time_local] [$ssl_preread_server_name] [$route] $status $bytes_sent $bytes_received $session_time';
    access_log /var/log/nginx/web2.moeelf.com.log;
}

本文来自:https://www.moeelf.com/archives/296.html

免责声明:
1.本站所有内容只做学习和交流使用。 版权归原作者所有。
2.保证站内提供的所有可下载源码资源(软件等)都是按“原样”提供,本站未做过任何改动;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。
3.本站部分内容均收集于网络!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。请联系站长邮箱:admin#ibian.online(#换成@)处理!

给TA打赏
共{{data.count}}人
人已打赏
中间件

Nginx 上部署 TLS1.3、Brotli、ECC双证书实践

2025-2-14 14:58:08

中间件服务器

开源监控方案 Prometheus+Grafana 安装配置

2025-2-25 9:27:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索