这篇文章介绍了不依赖面板配置nginx证书和反向代理的方法
注意
注1、本期视频教程。
注2、本期教程我均使用root用户运行,无法运行请切换为root用户。本期教程vps服务器在海外,无法运行请检查网络环境。
申请证书前我们先安装nginx,另附安装主线版nginx。
这里的邮箱my@example.com
我们随便编一个也行,不能用@example.com这样的,我填了我cloudflare的注册邮箱
curl https://get.acme.sh | sh -s email=my@example.com
|
安装完需要断开重新连接一下ssh,acme.sh才会加载生效。
acme.sh --set-default-ca --server letsencrypt
|
我们到cloudflare给当前域名申请一个api令牌,然后把令牌放在如下实例的引号之间,粘贴到命令行回车
export CF_Token="Y_jpG9AnfQmuX5Ss9M_qaNab6SQwme3HWXNDzRWs"
|
将两个example.com
处分别替换为自己的域名,然后运行。等会即可申请好证书
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
|
进入nginx配置文件夹
创建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"
|
acme.sh --upgrade --auto-upgrade
|
我们先安装一个alist,一会就用反代alist来演示,alist的默认端口为5244
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install
|
查看alist的初始密码
sudo systemctl status alist
|
我们进入nginx的配置文件夹
新建一个alist的反代配置文件
在文件中放入如下内容
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和未配置域名的访问
放置如下内容
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
|
我们把主域名和*.域名都解析到这台设备就可以反代任意子域名到不同服务了。只要把nginx配置文件复制粘贴改个名字,里面域名改一下。反代的端口改一下。如果有docker本地地址改为172.17.0.1或者响应的软件文档里也会提供location
块,复制过来替换了就可以了。