nginx

在systemd中启动nginx启动失败问题

在官网提供的nginx.sevice提供的参数有带有PrivateTmp=true,但该参数会和在编译时安装的--http-client-body-temp-path --http-proxy-temp-path编译参数冲突,导致在执行systemctl status nginx时无限反馈如下错误

Jul 15 11:47:01 core nginx[13435]: nginx: [emerg] mkdir() "/var/tmp/nginx/client/" failed (2: No such file or directory)

因此解决办法是要么去掉PrivateTmp=true,要么在编译时去掉--http-client-body-temp-path --http-proxy-temp-path

而关于PrivateTmp,在.service中使用使用该参数后,systemd会为程序设定私有的缓存目录,默认的/tmp是所有程序都读取的。而该参数是systemd与容器管理器对接参数之一,其他的参数还有PrivateNetwork、ProtectHome、ProtectSystem。这部分内容可以参考ststem对容器接口的说明。例:在[Service]节中添加ProtectHome=true,执行的程序将读取不到家目录,实现了对家目录的保护。

而关于--http-proxy-temp-path=path参数,在官网文档中有介绍。

用法:--http-proxy-temp-path=path

原文:defines a directory for storing temporary files that hold client request bodies. After installation, the directory can always be changed in the nginx.conf configuration file using the client_body_temp_path directive. By default the directory is named prefix/client_body_temp.
翻译:定义一个目录,用于存储保存客户端请求正文的临时文件。 安装后,始终可以使用 client_body_temp_path 指令在 nginx.conf 配置文件中更改目录。 默认情况下,该目录名为 prefix/client_body_temp

发表回复

您的电子邮箱地址不会被公开。