手动申请证书和配置Nginx反向代理
目录
这篇文章介绍了不依赖面板配置nginx证书和反向代理的方法
注意
注1、本期视频教程。
注2、本期教程我均使用root用户运行,无法运行请切换为root用户。本期教程vps服务器在海外,无法运行请检查网络环境。
1 使用ACME申请证书
申请证书前我们先安装nginx,另附安装主线版nginx。
sudo apt install nginx
1.1 安装ACME.sh
这里的邮箱my@example.com
我们随便编一个也行,不能用@example.com这样的,我填了我cloudflare的注册邮箱
curl https://get.acme.sh | sh -s email=my@example.com
安装完需要断开重新连接一下ssh,acme.sh才会加载生效。
1.2 设置证书颁发机构位letsencrypt
acme.sh --set-default-ca --server letsencrypt
1.3 添加cloudflare区域令牌
我们到cloudflare给当前域名申请一个api令牌,然后把令牌放在如下实例的引号之间,粘贴到命令行回车
export CF_Token="Y_jpG9AnfQmuX5Ss9M_qaNab6SQwme3HWXNDzRWs"
1.4 申请证书
将两个example.com
处分别替换为自己的域名,然后运行。等会即可申请好证书
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
1.4 放置证书
进入nginx配置文件夹
cd /etc/nginx
创建keyfile文件夹
mkdir keyfile
然后运行如下命令,将两处example.com
替换为自己的域名
acme.sh --install-cert -d example.com -d '*.example.com' \
--key-file /etc/nginx/keyfile/key.pem \
--fullchain-file /etc/nginx/keyfile/cert.pem \
--reloadcmd "service nginx force-reload"
1.5 设置acme自动更新
acme.sh --upgrade --auto-upgrade
2 配置反向代理
我们先安装一个alist,一会就用反代alist来演示,alist的默认端口为5244
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install
查看alist的初始密码
sudo systemctl status alist
2.1 配置alist反向代理
我们进入nginx的配置文件夹
cd /etc/nginx/conf.d
新建一个alist的反代配置文件
nano alist.conf
在文件中放入如下内容
server {
listen 80;
listen [::]:80;
server_name example.com; # 替换为你的域名
# 强制重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
#listen 443 quic reuseport;
#listen [::]:443 quic reuseport;
server_name example.com; # 替换为你的域名
http2 on;
ssl_certificate /etc/nginx/keyfile/cert.pem;
ssl_certificate_key /etc/nginx/keyfile/key.pem;
# SSL 配置(可选)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# 启用 HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5244; #反代不同服务修改这里
# the max size of file to upload
client_max_body_size 20000m;
# required for browsers to direct them to quic port
#add_header Alt-Svc 'h3=":443"; ma=86400';
}
}
同时我们关闭直接对公网ip和未配置域名的访问
nano close.conf
放置如下内容
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
# 对未配置的域名返回 444
return 444;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
ssl_certificate /etc/nginx/keyfile/cert.pem;
ssl_certificate_key /etc/nginx/keyfile/key.pem;
# 对未配置的域名返回 444
#return 444;
ssl_reject_handshake on;
}
重启nginx反代即生效
sudo systemctl restart nginx
3 结语
我们把主域名和*.域名都解析到这台设备就可以反代任意子域名到不同服务了。只要把nginx配置文件复制粘贴改个名字,里面域名改一下。反代的端口改一下。如果有docker本地地址改为172.17.0.1或者响应的软件文档里也会提供location
块,复制过来替换了就可以了。