添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在本文中,我们将详细介绍如何在Debian 12服务器上配置Nginx,设置Cloudflare CDN,以及为需要直接访问源站的特殊程序申请SSL证书。这个过程涉及多个步骤,包括安装Nginx,配置域名,使用Cloudflare CDN,以及使用Certbot申请SSL证书。

0. 引用

https://certbot-dns-cloudflare.readthedocs.io/en/stable/
https://lucasc.me/post/howto-certbot-dns-cloudflare-in-webmin

1. 安装和配置Nginx

首先,我们在Debian 12服务器上安装Nginx:

sudo apt update
sudo apt install nginx

安装完成后,配置您的域名。编辑Nginx配置文件,通常位于/etc/nginx/sites-available/目录下。

2. 配置Cloudflare CDN

接下来,我们使用Cloudflare CDN来提高网站性能和安全性:

  • 在Cloudflare上注册账户并添加您的域名。
  • 更新域名的DNS记录,将其指向Cloudflare的名称服务器。
  • 在Cloudflare仪表板中,确保SSL/TLS设置为"Flexible"模式。
  • 此配置允许客户端通过HTTPS (443端口)连接到Cloudflare,而Cloudflare则使用HTTP (80端口)连接到您的源服务器。

    3. 为特殊程序配置SSL

    现在,我们需要为一个需要直接访问源服务器的特殊程序配置SSL。这个程序需要绕过Cloudflare CDN,直接通过HTTPS连接到服务器。

    3.1 安装Certbot

    首先,安装Certbot和Nginx插件:

    sudo apt install certbot python3-certbot-nginx
    

    3.2 尝试使用Certbot申请证书

    我们首先尝试使用标准的Certbot方法申请证书:

    sudo certbot --nginx
    

    然而,这个方法失败了,因为域名已经在Cloudflare CDN后面。错误信息如下:

    Requesting a certificate for your.domain
    Certbot failed to authenticate some domains (authenticator: nginx).
    The Certificate Authority reported these problems:
      Domain: your.domain
      Type: unauthorized
      Detail: 2606:2700:8036::6815:3da4: Invalid response from
      http://your.domain/.well-known/acme-challenge/bm4SVNNxndX5KdtK_z4Gg83pjw4WbyuAav0RhH1kjM4: 403
    

    3.3 使用Cloudflare DNS验证方法

    为了解决这个问题,我们需要使用Cloudflare DNS验证方法来申请证书。

  • 安装Cloudflare DNS插件:
  • sudo apt install python3-certbot-dns-cloudflare
    
  • 在Cloudflare仪表板中创建API令牌。
  • 创建Cloudflare凭证文件:
  • mkdir -p ~/.secrets/certbot
    nano ~/.secrets/certbot/cloudflare.ini
    

    在文件中添加以下内容:

    # Cloudflare API token used by Certbot
    dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567
    

    确保将文件权限设置为只有您可以读取:

    chmod 600 ~/.secrets/certbot/cloudflare.ini
    
  • 使用Cloudflare DNS插件申请证书:
  • sudo certbot certonly \
      --dns-cloudflare \
      --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
      -d your.domain
    

    这个命令应该成功申请到SSL证书。

    3.4 配置Nginx使用新证书

    最后,编辑Nginx配置文件,使用新申请的SSL证书:

    server {
        listen 443 ssl;
        server_name your.domain;
        ssl_certificate /etc/letsencrypt/live/your.domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your.domain/privkey.pem;
        # 其他SSL和服务器配置...
    

    重新加载Nginx配置:

    sudo nginx -t
    sudo systemctl reload nginx
    通过以上步骤,我们成功在Debian 12服务器上配置了Nginx,设置了Cloudflare CDN,并为需要直接访问源站的特殊程序申请了SSL证书。这个过程涉及多个步骤,包括:

  • 安装和配置Nginx
  • 设置Cloudflare CDN
  • 使用Certbot和Cloudflare DNS插件申请SSL证书
  • 配置Nginx使用新的SSL证书
  • 这种配置允许大多数流量通过Cloudflare CDN,同时为特殊程序提供直接、安全的源站访问。记得定期更新SSL证书,以确保持续的安全性。