IT评测·应用市场-qidao123.com

标题: nginx配置在一个端口下,同时支持http与https两种协议 [打印本页]

作者: 九天猎人    时间: 2025-3-17 15:50
标题: nginx配置在一个端口下,同时支持http与https两种协议
Nginx 不支持同一个端口 同时提供 HTTP 和 HTTPS 服务,缘故原由如下:
解决方案

虽然 Nginx 自己不支持 HTTP 和 HTTPS 共享同一端口,但你可以利用 SSL 预读(SSL Preread) 技能,通过 Nginx 的 stream 模块在 同一端口 上区分 HTTP 和 HTTPS 流量。
配置方式:利用 stream 模块监听 443 端口并区分 HTTP/HTTPS
  1. # 在 http 之外的全局配置中
  2. stream {
  3.     map $ssl_preread_protocol $name {
  4.         "" http_backend;  # 没有 TLS 的是 HTTP
  5.         default https_backend;  # 有 TLS 的是 HTTPS
  6.     }
  7.     upstream http_backend {
  8.         server 127.0.0.1:8080;  # HTTP 服务器
  9.     }
  10.     upstream https_backend {
  11.         server 127.0.0.1:8443;  # HTTPS 服务器
  12.     }
  13.     server {
  14.         listen 443;
  15.         proxy_pass $name;
  16.         ssl_preread on;
  17.     }
  18. }
  19. http {
  20.     server {
  21.         listen 8080;
  22.         server_name yourdomain.com;
  23.         
  24.         location / {
  25.             root /usr/share/nginx/html;
  26.             index index.html;
  27.         }
  28.     }
  29.     server {
  30.         listen 8443 ssl;
  31.         server_name yourdomain.com;
  32.         ssl_certificate /path/to/cert.pem;
  33.         ssl_certificate_key /path/to/key.pem;
  34.         location / {
  35.             root /usr/share/nginx/html;
  36.             index index.html;
  37.         }
  38.     }
  39. }
复制代码
工作原理

最终结果


这样,你就能在 一个端口(443) 上同时支持 HTTP 和 HTTPS 访问!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4