【问题标题】:How to use one ssl certificate for different ports on nginx如何为 nginx 上的不同端口使用一个 ssl 证书
【发布时间】:2021-10-03 04:00:57
【问题描述】:

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

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;
    }



}

【问题讨论】:

  • location /5000 块会导致传入请求 https://merkle.org/5000 被路由到 http://localhost:5000/5000,这可能不是您想要的。我猜location /api 会是一个合理的选择。

标签: nginx ssl port


【解决方案1】:

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

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

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

  1. 为 API 提供一个单独的(子)域,例如api.example.com
  2. 按 URL 路径路由,例如/api

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

【讨论】:

    猜你喜欢
    • 2018-11-08
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多