MoreRSS

site iconvillivateur | 冯锦瑾修改

嵌入式工程师,博客名:嵌入式工程猫。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

villivateur | 冯锦瑾的 RSS 预览

维护 Nginx 时,什么时候应该用 reload,什么时候应该用 restart?

2024-10-06 22:15:51

本文是“攻玉计划”的一部分,翻译自 https://stackoverflow.com/questions/13525465/when-to-restart-and-not-reload-nginx/20215497

问题描述

使用 Nginx 时,什么情况下 reload 无法满足需求,而必须要使用 restart 命令呢?

如果 Nginx 进程占用了过多内存,是不是应该用 restart 来重启?如果修改了 Nginx 的核心配置,或者某些插件的配置,是不是也需要使用 restart 命令?

修改 Nginx 配置后,用户既可以使用 restart 也可以使用 reload 来使配置生效,见 Ubuntu 上 /etc/init.d/nginx -h 的输出。

那么,哪种方案更优呢?

回答 1

reload 比 restart 更安全,因为如果使用 reload 命令,在旧的进程终止之前,Nginx 会先解析配置文件,如果配置文件有问题,那么就会退出重启流程。

也就是说,如果你的配置文件有问题,比如存在语法错误,那么使用 restart 命令后,Nginx 会先停止,然后就无法再启动了。

reload 命令如果成功执行,同样会终止旧的进程,所以如果存在内存泄漏问题,也一样可以清除掉。

回答 2 & 3

我遇到过一种情形,如果我修改了监听的 IP 地址,也就是配置文件里的 listen 字段,那就必须使用 restart 命令。

从 1.6.x 版本开始,如果仅把监听的 IP 地址从一个改为另一个,那么 reload 可以生效,但如果把监听地址从 listen *:80 修改为 listen x.x.x.x:80,依然需要 restart。

我只验证了 IPv4 的场景,IPv6 应该类似。

译者按:译者今天遇到过一样的问题,我修改了 listen 80; listen 172.0.0.1:80,结果发现 reload 不生效,必须 restart。

批量修改 qbittorrent-nox 内种子的 tracker 地址

2024-09-13 20:40:18

背景

馒头 PT 站的默认 tracker 出了问题,我到现在都没搞懂是被墙了还是我自己设备的问题,反正就是无法访问默认的 .cc 域名,但 .io 的域名是可以的。

但手动修改 .cc 倒 .io ,也太麻烦了,我有上百个种子。

我是在一台 Ubuntu 服务器上运行的原版 qbittorrent-nox,用 webui 访问。

解决方案

qbittorrent-nox 会在当前用户的家目录中的 ~/.local/share/qBittorrent/BT_backup 目录内存放所有正在使用的种子(虽然我也不清楚为啥名字里有 backup),vim 看了一眼,就是很正常的种子文件格式。

所以,理论上,直接批量替换这些种子文件里面的 tracker URL,就能解决问题。

说干就干,先停掉 qb 的服务,然后备份 BT_backup,再在 BT_backup 内执行 find . -type f -exec sed -i 's/example.cc/example.io/' {} \; ,最后重启 qb 服务,果然解决问题。

把 vim 的缩进设为 4 个字符,并且 tab 自动转空格

2024-05-07 20:36:47

修改本用户的 ~/.vimrc 文件,添加以下内容。如果要想 sudo vim 也生效,那 /root/.vimrc 也要改。

1
2
3
4
5
6
7
filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab

上面的注释已经解释了含义。

不用 snap,在 Ubuntu 上安装 certbot

2024-05-07 20:36:30

Certbot 官网居然只提供 snap 方式安装,而 snap 是我在 Ubuntu 上最不喜欢的东西

那就直接用 pip 安装吧~

1
sudo apt install certbot python3-certbot-nginx

在 Ubuntu 中启用 swap

2024-05-07 20:35:55

首先,swap 多大比较好?如果你有一个 2G 内存的服务器,偶尔内存有点吃紧,那就再开 2G 的 swap 吧。其他的情况,随缘。如果内存不紧张,就不用开。

依次执行:

1
2
3
4
5
6
7
8
9
10
sudo fallocate -l 2G /swapfile # 在根目录下创建一个 2G 大小的 swap 文件
sudo chmod 600 /swapfile # 修改权限配置
sudo mkswap /swapfile # 把这个文件作为 swap
sudo swapon /swapfile # 启用 swap

sudo vim /etc/fstab # 编辑 fstab 以自动挂载 swap 文件
# 添加以下内容
/swapfile swap swap defaults 0 0

sudo swapon --show # 查看 swap 是否已经开启成功

让 Nginx 反向代理的程序获取客户端真实 IP

2024-05-07 20:35:45

Nginx 配置添加以下内容:

1
2
3
4
5
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

其含义就是在反代时,在客户端发起的请求报文上添加 X-Real-IPX-Forwarded-For 两个 HTTP 头。X-Real-IP 表示表观客户端地址,X-Forwarded-For,顾名思义,就是“为谁代理”的意思,这个可以用来嵌套式传输客户端真实地址。

被代理的服务,只要能正确解析这两个头,就能获得客户端真实地址。