gpt4 book ai didi

ubuntu - 如何将 certbot 添加到另一个端口

转载 作者:行者123 更新时间:2023-12-04 18:50:36 25 4
gpt4 key购买 nike

我正在设置服务器的后端,但我无法让 certbot 使用 https 在我的 API 上工作。只有我的网站被重定向到 https。

我只是不太熟悉nginx,我不知道如何解决这个问题。我需要最后一台服务器在端口 4444 上使用 certbot。

root /var/www/domain.com/public;

server {

index index.html index.htm index.nginx-debian.html;

server_name domain.com www.domain.com blog.domain.com;

location / {
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;
# try_files $uri $uri/ =404;
}

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
if ($host = www.domain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot


if ($host = domain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot


if ($host = blog.domain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
listen [::]:80;

server_name domain.com blog.domain.com www.domain.com;
return 404; # managed by Certbot

}

server {
location / {
proxy_pass http://localhost:4444;
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;
# try_files $uri $uri/ =404;
}
}

最佳答案

此处需要对此行进行一些澄清:

I need the last server to use certbot, on port 4444



您是说使用 Certbot 颁发的证书访问端口 4444(通过反向代理)吗?

在最后一个服务器 block 中,您可能错过了设置 server_name .请注意,您在之前的服务器 block 中有这一行。

假设以下场景:

API 在不同的子域中运行
  • API:api.domain.com(您的 API 运行的地方)
  • Certbot 的证书在 /etc/letsencrypt/live/domain.com 中颁发了通配符证书

  • 鉴于这些假设,建议的服务器 block 配置可能如下:
    server {
    server_name api.domain.com;
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
    proxy_pass http://localhost:4444;
    ## additional proxy configurations here
    }
    }

    如果您没有申请通配符证书覆盖所有子域,我建议专门为您的 API 子域申请,并修改 ssl_certificate_keyssl_certificate必要的路径。

    API 是主域的一部分
  • API:domain.com/api(API 在 domain.com 内部运行)

  • 如果是这种情况,请考虑在您的第一个服务器 block 内添加一个位置 block :
    server {
    ....
    location / {
    ..... no changes here
    }

    ## add this block
    location /api/ {
    proxy_pass http://localhost:4444;
    ## additional proxy configurations here
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    ....
    }


    在这种情况下, ssl_certificate_key 不需要更改。和 ssl_certificate路径。

    希望有帮助!

    关于ubuntu - 如何将 certbot 添加到另一个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56519434/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com