学习笔记
技术分享
网络工具
娱乐生活
私有部署
加密资讯
开发工具
🌏Openwrt玩转Nginx配置
type
status
date
tags
slug
summary
category
icon
password
date (1)
Nginx是一个高性能的HTTP和反向代理服务器哦! 在OpenWRT里,它也超级好用的!编译的时候,记得在LuCI里勾选上
luci-nginx
和luci-ssl-nginx
,然后就能通过uci命令轻松管理啦!💫📚 UCI篇
UCI命令就像是魔法咒语一样,让我们可以控制OpenWRT的配置哦!(๑˃̵ᴗ˂̵)و 下面是UCI命令的一些常用咒语:
命令 | 说明 |
batch | 进入批处理模式,允许连续执行多个 UCI 命令。 |
export [<config>] | 导出指定配置文件的内容(默认为所有配置文件)。 |
import [<config>] | 导入指定配置文件的内容(默认为所有配置文件)。 |
changes [<config>] | 显示指定配置文件的未提交更改(默认为所有配置文件)。 |
commit [<config>] | 提交指定配置文件的更改(默认为所有配置文件)。 |
add <config> <section-type> | 添加一个新的节(section)到指定配置文件中。 |
add_list <config>.<section>.<option>=<string> | 将字符串添加到指定选项的列表中。 |
del_list <config>.<section>.<option>=<string> | 从指定选项的列表中删除字符串。 |
show [<config>[.<section>[.<option>]]] | 显示指定配置文件、节或选项的内容(默认为所有配置文件)。 |
get <config>.<section>[.<option>] | 获取指定配置文件、节或选项的值。 |
set <config>.<section>[.<option>]=<value> | 设置指定配置文件、节或选项的值。 |
delete <config>[.<section>[[.<option>][=<id>]]] | 删除指定配置文件、节或选项。 |
rename <config>.<section>[.<option>]=<name> | 重命名指定配置文件、节或选项。 |
revert <config>[.<section>[.<option>]] | 撤销指定配置文件、节或选项的未提交更改。 |
reorder <config>.<section>=<position> | 重新排序指定节的顺序。 |
apply [<config>] | 提交更改并应用配置(通常用于自动重启服务)。 |
reload [<config>] | 重新加载指定配置文件(通常用于重新加载服务配置)。 |
status [<config>] | 显示指定配置文件的状态(通常用于检查服务是否运行)。 |
start [<config>] | 启动指定配置文件对应的服务。 |
stop [<config>] | 停止指定配置文件对应的服务。 |
restart [<config>] | 重启指定配置文件对应的服务。 |
命令选项 | 说明 |
c <path> | 设置配置文件的搜索路径(默认是 /etc/config )。 |
p <path> | 添加配置更改文件的搜索路径。 |
P <path> | 添加配置更改文件的搜索路径并设为默认。 |
q | 安静模式(不显示错误信息)。 |
s | 强制严格模式(遇到解析错误就停止)。 |
S | 禁用严格模式。 |
f | 强制模式(覆盖已存在的配置文件)。 |
m | 合并模式(将导入的内容与现有配置合并)。 |
n | 显示配置文件的名称(而不是内容)。 |
N | 显示配置文件的名称和路径(而不是内容)。 |
o <file> | 将输出重定向到指定文件。 |
O <file> | 将输出重定向到指定文件并覆盖现有内容。 |
r <path> | 设置配置文件的根路径(默认是 /etc/config )。 |
R <path> | 设置配置文件的根路径并设为默认。 |
t <type> | 设置节类型(用于 add 命令)。 |
T <type> | 设置节类型并设为默认(用于 add 命令)。 |
u | 显示未提交的更改(与 changes 类似)。 |
v | 详细模式(显示更多信息)。 |
V | 显示 UCI 工具的版本信息。 |
💡 可爱小贴士:Nginx的默认设置是通过uci.conf文件控制的哦,不过这个文件不能直接编辑呢!要用我们的秘密武器——UCI命令!(≧∇≦)ノ
🔍 检查Nginx配置 🔍
想看看Nginx现在的配置吗?用
uci show nginx
这个咒语!(ノ◕ヮ◕)ノ\*:・゚✧🚀 提交并重启Nginx 🚀
80和443端口被封禁了,所以新服务使用8080端口!(ง •̀ω•́)ง✧
- 添加一个默认的 server 块,拒绝通过:8080的所有未匹配域名的请求
- 使用下面的命令来添加一个服务
- 使用nano /etc/nginx/conf.d/alist.locations创建反代服务
- 配置好了,就要提交并让它生效啦!(๑•̀ㅂ•́)و✧
💡 可爱小贴士:你可以使用nginx -t -c /etc/nginx/uci.conf
检查配置
🎨 其他配置的小秘密 🎨
想要更多自定义设置?(๑>◡<๑) 看看
/etc/nginx/uci.conf.template
这个文件!每次Nginx重新加载时,都会根据这个模板生成配置哦!设置项 | 说明 |
worker_processes | 设置Nginx工作进程的数量,通常设置为 auto 以自动匹配CPU核心数。 |
user | 指定Nginx运行时使用的用户,通常设置为 root 以确保有足够的权限访问所有资源。 |
events | 配置事件模块的参数,通常保持为空或使用默认设置。 |
access_log | 控制访问日志的开启与关闭,设置为 off 可以关闭访问日志以节省资源。 |
log_format | 自定义日志格式,可以记录请求方法、URL、状态码、响应大小、请求时间等信息。 |
include mime.types | 包含MIME类型文件,用于将文件扩展名映射到MIME类型。 |
default_type | 设置默认的MIME类型,通常为 application/octet-stream 。 |
sendfile | 启用或禁用 sendfile 系统调用,用于高效传输文件。 |
client_max_body_size | 设置客户端请求体的最大允许大小,超过此大小的请求将被拒绝。 |
large_client_header_buffers | 设置用于读取大型客户端请求头的缓冲区大小和数量。 |
types_hash_bucket_size | 设置MIME类型哈希表的桶大小,影响性能。 |
server_names_hash_bucket_size | 设置服务器名称哈希表的桶大小,影响性能。 |
gzip | 启用或禁用Gzip压缩,用于减少传输数据量。 |
gzip_vary | 启用或禁用Vary响应头,通知代理服务器根据请求头进行压缩。 |
gzip_proxied | 设置哪些类型的代理请求可以进行Gzip压缩。 |
gzip_min_length | 设置进行Gzip压缩的最小文件大小。 |
gzip_comp_level | 设置Gzip压缩级别,值越高压缩率越高但CPU消耗也越大。 |
gzip_buffers | 设置Gzip压缩缓冲区的大小和数量。 |
gzip_types | 设置哪些MIME类型的文件可以进行Gzip压缩。 |
root | 设置网站的根目录,所有请求将从这个目录中提供文件。 |
这些设置项可以根据你的需求进行调整,以优化Nginx的性能和功能。
改好模板后,记得重新加载并重启Nginx哦!(✪ω✪)
🛠️CA证书篇🛠️
acme.sh
是一个敲~厉害的开源ACME协议客户端脚本!(๑•̀ㅂ•́)و✧ 它可以帮你轻松申请、安装和自动更新SSL证书,支持超多CA,比如Let's Encrypt、ZeroSSL等等~ 最重要的是,它可以申请免费的泛域名证书哦!以下是acme.sh
的常用命令。命令 | 作用 |
acme.sh --list | 查看已签发的证书 |
acme.sh --remove -d example.com | 移除不需要的域名 |
acme.sh --renew -d example.com --force | 强制刷新证书 |
acme.sh --info -d example.com | 查看已安装证书信息 |
acme.sh --uninstall | 卸载acme.sh |
acme.sh --upgrade | 手动升级acme.sh |
acme.sh --upgrade --auto-upgrade | 开启自动升级 |
acme.sh --upgrade --auto-upgrade 0 | 关闭自动升级 |
acme.sh --set-default-ca --server letsencrypt | 切换到Let's Encrypt申请泛域名证书 |
acme.sh --set-default-ca --server zerossl | 切换到ZeroSSL申请泛域名证书 |
💡 小贴士:泛域名证书就像一个万能钥匙🔑,可以用于所有子域名,超级方便!再也不用给每个子域名单独申请证书啦!ヾ(≧∇≦*)ゝ
🔑acme.sh安装🔑
打开终端,输入以下命令,就像施展魔法一样简单!🧙♀️✨
或者使用
wget
:安装过程中会做这些事情哦:
- 把
acme.sh
脚本放到~/.acme.sh/
- 创建别名acme.sh=~/.acme.sh/acme.sh方便你使用~
如果没有自动创建别名(提示command not found),可以使用以下命令自行创建:
- 设置定时任务,让证书自动更新!
acme.sh会自动创建定时任务,每天检查证书是否需要续期,你可以用
crontab -l
查看定时任务哦~若没有,也可以自行添加,定时任务如下:🌈 申请泛域名证书 🌈
终于到了最激动人心的时刻啦!ヾ(≧▽≦*)o
- 注册ZeroSSL (默认CA)
从v3.0开始,acme.sh默认使用ZeroSSL啦! ZeroSSL没有速率限制,还有好用的WEB界面哦~
需要先访问 ZeroSSL官网 注册并获取EAB凭据,然后使用以下命令注册
⚠️ 虽然通过acme.sh申请ZeroSSL证书没有数量限制,但还是要在ZeroSSL官网注册一个账号哦!
- 配置DNS API验证
- 登录Cloudflare后台,左侧导航栏 管理帐户 -> 帐户API令牌
- 点击创建令牌 -> 编辑区域 DNS -> DNS 编辑 -> 区域资源 所有区域
- 进入网站管理,左侧导航栏 概述 -> 右侧导航栏 API -> 区域ID 帐户ID
- 使用DNS API申请泛域名证书
这种方式最方便,可以自动添加和删除DNS记录,强烈推荐!👍👍👍
不同的域名服务商获取API Token的方式不一样,请参考官方文档哦~
这里以Cloudflare为例:
💡 小贴士:记得把Token保存好哦!只会出现一次!!
看到
Cert success
就表示成功啦!🎉🎉🎉⚙️ 安装证书到服务器 ⚙️
证书申请好了,要把它安装到服务器才能用哦~ (๑•̀ㅂ•́)و✧
首先创建本地保存路径
mkdir /etc/acme
- 使用
--install-cert
安装.key
和.crt
文件:
- 使用
--install-cert
安装.pem
文件:
💡 小贴士:.key
与.pem
不能同时安装,因为如果路径相同,后执行的命令会覆盖之前的文件。Web服务器建议使用fullchain.pem
避免一些奇奇怪怪的问题,如果你有特定的需求或配置要求使用.key
和.crt
文件,那么可以选择使用这些扩展名。
- 设置自动更新
🖥️ 配置Nginx服务器 🖥️
最后一步,配置你的Web服务器!(๑•̀ㅂ•́)و✧
在
/etc/nginx
下创建ssl_params
文件:然后配置uci并重启nginx:
🖥️ 套Cloudflare反代IP加速 🖥️
- 添加源站:
首先我们添加一个 AAAA 记录,解析 IPv6 就是我们服务器的真实 IP,并开启小黄云:

- 重定向https端口:
在Origin Rules中使用SSL/HTTPS将Https端口重定向至源站8080端口:

- 获取反代IP
打开fofa搜索反代IP:
有关安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
Loading...
Last update: 2024-12-19
✨