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



我正在尝试配置我的nginx以支持不同端口的ssl。如果我为我的react应用程序正在运行的端口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;
}

}

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

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

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

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

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

最新更新