如何在 nginx 上的不同端口使用一个 ssl 证书

问题描述 投票:0回答:1

我正在尝试配置我的 nginx 以支持不同端口的 ssl。如果我对运行我的 React 应用程序的端口 3000 执行此操作,则只会变成 https,这意味着它不允许端口 5000 请求通过,因为 5000 仍然是 http。我使用的是aws ec2。下面是我的 nginx 默认文件代码。

server {
    listen 80;
    listen [::]:80;
    server_name merkle.org www.merkle.org;
    return 301 https://merkle.org$request_uri;
}

server {
    listen 443 ssl;
    server_name merkle.org web.merkle.org;
    # Certificate
    ssl_certificate /etc/nginx/ssl/merkle_org.crt;
    
    # Private Key
    ssl_certificate_key /etc/nginx/ssl/private.key;
    location / {
        # My react 
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
    
    location /5000 {
        # This is my nodejs API 
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
nginx ssl port
1个回答
2
投票

我正在尝试配置我的 nginx 以支持不同端口的 ssl

我假设您实际上希望在不同后端端口的单个端口(默认为 443)上支持 SSL,对吗?

在这种情况下,你首先需要想办法清楚地区分传入的请求。这里(至少)有两种流行的方法:

  1. 为 API 有一个单独的(子)域,例如
    api.example.com
  2. 通过 URL 路径进行路由,例如
    /api

请注意,对于第一种方法,您需要一个单独的证书(或包含此名称的单个证书)。

© www.soinside.com 2019 - 2024. All rights reserved.