type
status
date
slug
summary
tags
category
icon
password
caddy优势:配置简单,自动证书,适合个人网站
nginx优势:高性能,高可靠,适合复杂网站
选择困难症?
能用就行选caddy;追求上进选nginx
本文不可避免的涉及两个概念,简单举例如下:
web服务器:刚安装完Caddy或Nginx时默认给的配置,用于“展示”硬盘里某个文件
反向代理:如alist给的ip:5244,希望将它配置为https+域名来访问
Caddy配置
懒人一键安装配置脚本:
安装Caddy
配置caddy
- 输入
nano /etc/caddy/Caddyfile配置caddy,第一次安装时默认有一个示例配置,不需要的话可以将内容全部删除,然后按需求添加如下配置
web服务器
其中,
:20000 为暴露端口,/var/www 为希望展示的文件夹路径如需php7.4仅需在配置中间添加
php_fastcgi unix//run/php/php7.4-fpm.sock反向代理
其中,
www.example.com为希望配置的域名,abcd@gmail.com为自己的邮箱,127.0.0.1:5244为应用给的端口- 保存后
systemctl restart caddy或systemctl reload caddy即配置完成
如何删除
Nginx配置
先解决一些常见困惑,比如应用使用的是非80 443端口,是否需要修改为对应端口?
答:本文中的
listen 即监听端口为80或[::]:80 ,无论实际使用什么端口都不需要修改,因为在浏览器直接输入域名访问时默认使用80端口并且还需要用于申请证书的HTTP挑战(HTTP Challenge);但配置反向代理时proxy_pass的端口需要改为实际使用端口nginx由各种功能模块构成,在配置前需要理解其中的三个文件/文件夹作用,分别是/etc/nginx目录下的nginx.conf文件,sites-available文件夹,sites-enabled文件夹,简要功能如下:
nginx.conf文件:包含了nginx的全局配置,对所有网站都生效,一般是通用配置内容
sites-available文件夹:存放网站配置,如site1.conf,site2.conf但并不直接影响Nginx
sites-enabled文件夹:通常并不直接编辑配置而是使用ln命令从sites-available文件夹创建链接到这个文件夹,直接影响Nginx
一些可能存在的其他情况
在某些nginx版本中可能没有sites-xxx文件夹,那么只需要将所有配置放到conf.d文件夹即可。但个人建议还是手动创建sites-available,sites-enabled两个文件夹并在nginx.conf文件的http块最后一行增加
include /etc/nginx/sites-enabled/*; 这样会比较规范有了这些基本认知就可以开始配置nginx辣
安装nginx
PHP是nginx的好搭档,可以按需求选择是否安装php
配置nginx
编辑一个配置文件,如site1.conf,需放在/etc/nginx/sites-available文件夹下
web服务器
其中,
www.example.com 为域名,/var/www 为希望展示的文件夹路径,如需配置ipv6则将listen 80改为listen [::]:80 。
如果需要启用php,可以将index index.html 改为index index.php index.html 并添加一个location块,如使用php7.4反向代理
其中,
www.example.com 为域名,20000为应用端口。如需配置ipv6则将listen 80改为listen [::]:80 - 创建软链接
- 测试配置是否正确
输出如下则配置正确
- 加载配置重启nginx
证书配置
配置证书通常使用certbot或acme.sh,如果网站托管在CF也可以使用CF的15年自签证书(注意使用CF证书必须开小黄云)
因为个人常用certbot,因此本文以certbot为例
安装certbot
申请证书
初次使用出现如下选项
接下来等待配置,成功了会有如下提示
此时nginx配置完成,可以看到配置里自动增加了443端口相关的server块配置
申请证书时可能碰到的小问题
开启Cloudflare的小黄云后由于certbot无法正确获取ip导致证书申请失败
解决办法:在
/etc/nginx/conf.d 目录下创建一个cf_ips.conf文件,内容如下:保存后
nginx -s reload 重载配置即可正常申请证书定时更新证书
免费证书通常3个月到期,因此需要定期检查证书并续期
仅需一个命令即可定期更新所有证书
