【问题标题】:site not enabling ssl after auto configuration by CertbotCertbot 自动配置后站点未启用 ssl
【发布时间】:2019-12-14 00:45:23
【问题描述】:

我们有一个静态站点代码,并希望在其上启用 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;
}

【问题讨论】:

  • 嗯,会发生什么?该站点是否仅使用 HTTP 而不是 HTTPS?它会返回 404 吗?您是否使用nginx -t 来查看您的配置是否有任何问题?进行更改后,您是否重新启动或重新加载 nginx
  • 是的,我做了 nginx -t 并且没有错误,但是重新启动 nginx 后网站无法加载
  • @ShawnC。我只能想到权限问题。好吧,这些证书只能通过sudo 访问
  • 错误日志是否说明了什么
  • 它什么也没说。我尝试了很多配置,例如tecadmin.net/nginx-force-redirect-to-https-with-www,但仍然没有成功。重定向有效,但它只是在 https 上没有做任何事情

标签: ssl nginx deployment ssl-certificate devops


【解决方案1】:

致所有访问此问题的人

修复是:在 UFW(如果启用)中,您必须在 AWS EC2 中启用 FULL nginx 和端口(用于 HTTPs)(在我的情况下,您的可以不同)

【讨论】:

    【解决方案2】:

    我认为第二个服务器块旨在将所有 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
    • location 块中移出所有 ssl 指令 (listen 443 ssl; ssl_certificate ...; etc) 并将它们放在 server 块下。

    【讨论】:

    • 因为我有多个静态站点和其他小型服务器。我收到以下错误 sudo nginx -t nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/abcxyz.com:2 nginx: configuration file /etc/nginx/nginx.conf测试失败
    • 看到这个:stackoverflow.com/questions/30973774/… 你应该只有一个默认服务器。
    • 即使拥有一台默认服务器也无法解决此问题。网站仍然不会加载。请注意防火墙已禁用。所以防火墙方面应该没有任何问题
    • 您是否也根据建议更改了第二个块?
    • 实际上我目前不在笔记本电脑旁。我有完全相同的配置,第二个块根据您的说明进行了更改。但我也会很快更新确切的当前配置
    猜你喜欢
    • 2015-05-29
    • 2021-04-10
    • 2021-12-24
    • 1970-01-01
    • 2019-06-21
    • 2019-06-20
    • 2011-06-14
    • 2015-06-06
    • 1970-01-01
    相关资源
    最近更新 更多