在本文中,我们将详细介绍如何在Debian 12服务器上配置Nginx,设置Cloudflare CDN,以及为需要直接访问源站的特殊程序申请SSL证书。这个过程涉及多个步骤,包括安装Nginx,配置域名,使用Cloudflare CDN,以及使用Certbot申请SSL证书。
https://certbot-dns-cloudflare.readthedocs.io/en/stable/
https://lucasc.me/post/howto-certbot-dns-cloudflare-in-webmin
首先,我们在Debian 12服务器上安装Nginx:
sudo apt update
sudo apt install nginx
安装完成后,配置您的域名。编辑Nginx配置文件,通常位于/etc/nginx/sites-available/
目录下。
接下来,我们使用Cloudflare CDN来提高网站性能和安全性:
此配置允许客户端通过HTTPS (443端口)连接到Cloudflare,而Cloudflare则使用HTTP (80端口)连接到您的源服务器。
现在,我们需要为一个需要直接访问源服务器的特殊程序配置SSL。这个程序需要绕过Cloudflare CDN,直接通过HTTPS连接到服务器。
首先,安装Certbot和Nginx插件:
sudo apt install certbot python3-certbot-nginx
我们首先尝试使用标准的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
为了解决这个问题,我们需要使用Cloudflare DNS验证方法来申请证书。
sudo apt install python3-certbot-dns-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
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-d your.domain
这个命令应该成功申请到SSL证书。
最后,编辑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证书。这个过程涉及多个步骤,包括:
这种配置允许大多数流量通过Cloudflare CDN,同时为特殊程序提供直接、安全的源站访问。记得定期更新SSL证书,以确保持续的安全性。
还没有人评论,抢个沙发吧...