[comment]: # ({eb648bc1-7c9bb1c5})
# 13 其他问题

[comment]: # ({/eb648bc1-7c9bb1c5})

[comment]: # ({ef74ee16-ab4b69b8})
#### 登录和 systemd

我们建议[创建](/manual/installation/install#create-user-account)一个 *zabbix* 用户作为系统用户，也就是说，该用户不能用于登录。有些用户忽略了这一建议，并使用同一个账户登录到运行 Zabbix 的主机（例如通过 SSH）。这可能会在注销时导致 Zabbix 守护进程崩溃。在这种情况下，您会在 Zabbix 服务器日志中看到类似以下内容：

    zabbix_server [27730]: [file:'selfmon.c',line:375] lock failed: [22] Invalid argument
    zabbix_server [27716]: [file:'dbconfig.c',line:5266] lock failed: [22] Invalid argument
    zabbix_server [27706]: [file:'log.c',line:238] lock failed: [22] Invalid argument

以及在 Zabbix agent 日志中看到：

    zabbix_agentd [27796]: [file:'log.c',line:238] lock failed: [22] Invalid argument

这是因为 `/etc/systemd/logind.conf` 中配置了 systemd 的默认设置 `RemoveIPC=yes`。当您从系统注销时，Zabbix 之前创建的信号量会被移除，从而导致崩溃。

以下是 systemd 文档中的一段说明：

    RemoveIPC=

    控制当用户完全注销时，是否应移除属于该用户的 System V 和 POSIX IPC 对象。该项接受布尔值参数。若启用，则在该用户的最后一个会话终止后，用户将不能再消耗 IPC 资源。这包括 System V 信号量、共享内存和消息队列，以及 POSIX 共享内存和消息队列。请注意，root 用户和其他系统用户的 IPC 对象不受此设置影响。默认值为 "yes"。

解决此问题有 2 种方法：

1.  （推荐）不要再使用 *zabbix* 账户执行除 Zabbix 进程之外的其他操作，为其他用途创建一个专用账户。
2.  （不推荐）在 `/etc/systemd/logind.conf` 中设置 `RemoveIPC=no`，然后重启系统。请注意，`RemoveIPC` 是一个系统级参数，修改它会影响整个系统。

[comment]: # ({/ef74ee16-ab4b69b8})

[comment]: # ({ce7659d9-ce7659d9})
#### 在 proxy 后方使用 Zabbix 前端

如果 Zabbix 前端运行在 proxy 服务器之后，则需要在 proxy 配置中重写
file 的 cookie 路径，以匹配反向代理的路径。请参见下面的示例。如果 cookie 路径未
被重写，用户在尝试 login 到 Zabbix 前端时可能会遇到授权 问题。

[comment]: # ({/ce7659d9-ce7659d9})

[comment]: # ({4db2f7ca-4db2f7ca})
##### nginx 的示例配置

    # ..
    location / {
    # ..
    proxy_cookie_path /zabbix /;
    proxy_pass http://192.168.0.94/zabbix/;
    # ..

[comment]: # ({/4db2f7ca-4db2f7ca})

[comment]: # ({55cc0aaf-55cc0aaf})
##### Apache 配置示例

    # ..
    ProxyPass "/" http://主机/zabbix/
    ProxyPassReverse "/" http://主机/zabbix/
    ProxyPassReverseCookiePath /zabbix /
    ProxyPassReverseCookieDomain 主机 zabbix.example.com
    # ..

[comment]: # ({/55cc0aaf-55cc0aaf})
