Nginx使用stream分流SNI与共存443端口

1、在Nginx配置文件中插入以下代码

# 示例代码
# stream模块设置
stream {
    # SNI识别,将域名映射成对应的配置名称
    map $ssl_preread_server_name $cust_name {
        blog.wwqq.site blog.wwqq.site;  # 域名修改为自己的
        wwqq.site wwqq.site; 
    }   
    
    upstream blog.wwqq.site {    
        server unix:/dev/shm/blog.wwqq.site.sock;   # 这里使用socket路径,也可以使用TCP/IP形式
    }                                               # 如server http://127.0.0.1:8443;
 
    upstream wwqq.site {
        server unix:/dev/shm/wwqq.site.sock;
    }
    
# stream模块监听443端口位置
    server {
        listen 443 reuseport;    # 可选reuseport参数 端口复用,理论上可以提高连接性能
        listen [::]:443 reuseport;
        ssl_preread on;
        proxy_protocol on;    # 开启proxy_protocol
        proxy_pass  $cust_name;
    }
}

2、在blog.wwqq.site网站配置文件中插入以下代码

# 示例代码
# 去掉原先配置文件以下部分
server {
    listen 80; 
    listen 443; 
...

# 加入以下部分
# 设置 HTTP 服务器,将所有 HTTP 请求都重定向到 HTTPS
server {
    listen 80 ; 
    listen [::]:80 ; 
    server_name blog.wwqq.site; 
    # 重定向所有 HTTP 请求到 HTTPS
    if ($scheme = http) {
        return 301 https://$host$request_uri; 
    }
}
server {
    listen unix:/dev/shm/blog.wwqq.site.sock ssl http2 proxy_protocol; 
    set_real_ip_from unix:;  # 从Proxy protocol获取真实IP
#   set_real_ip_from 127.0.0.1; # 如上游使用listen 127.0.0.1:8443则使用这一条
    real_ip_header proxy_protocol;  

3、参考资料

1、[nginx][tls] nginx配置https与ssl/tls的sni的方法 - toong - 博客园 (cnblogs.com)

2、探索惊群 ⑥ - nginx - reuseport - 知乎 (zhihu.com)

3、模块 ngx_stream_ssl_module (nginx.org)

4、通过 UNIX 套接字连接两个 NGINX (davidsierra.dev)

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息