首页 > 解决方案 > Certbot 自动配置后站点未启用 ssl

问题描述

我们有一个静态站点代码,并希望在其上启用 ssl。该服务器还运行其他几个静态站点。这是我在配置中的内容

server {
  root /home/ubuntu/projects/example-beta/dist;
  index index.html index.htm index.nginx-debian.html;

  server_name  beta.example.com;

  location / {
    try_files $uri $uri/ =404;  
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/beta.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/beta.example.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 = beta.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot



  server_name  beta.example.com;


    listen 80;
    return 404; # managed by Certbot


}

但它不选择ssl。我已将实际域名替换为example. 几天来我一直在尝试不同的解决方案。对不起,我是 devOps 的新手。非常感谢任何解决方法或帮助

编辑

当前配置

server {
  root /home/ubuntu/projects/savepakistan-beta/dist;
  index index.html index.htm index.nginx-debian.html;

  server_name  beta.wesavepakistan.com;

  location / {
    try_files $uri $uri/ =404;  
  }

  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/beta.wesavepakistan.com/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/beta.wesavepakistan.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 {
  listen 80 default_server;
  listen [::]:80 default_server;
  server_name beta.wesavepakistan.com;
  return 301 https://$host$request_uri;
}

标签: sslnginxdeploymentssl-certificatedevops

解决方案


我想第二个服务器块旨在将所有 HTTP 请求重定向到 HTTPS,我将用以下内容替换此块:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name beta.example.com;
    return 301 https://$host$request_uri;
}

为了解决 SSL 问题,我会这样做:

  • 确保您的证书是使用主机名创建的:beta.example.com
  • 从块中移出所有 ssl 指令 ( listen 443 ssl; ssl_certificate ...; etc)location并将它们放在server块下。

推荐阅读