Apache 无法连接到 Unix 域套接字

Apache 无法连接到 Unix 域套接字

我正在尝试安装一个自定义 Web 应用程序,并使用 Apache HTTPd 作为前端 Web 服务器。但为什么 Apache 报告无法访问应用程序侦听的 Unix 套接字?

Web 应用程序配置为在此处监听:

# ls -l /run/mt_plackup_master.sock
srwxrwxrwx. 1 apache apache 0 Jan 18 21:16 /run/mt_plackup_master.sock

我手动制作chown apache:apachechmod 777授予套接字文件的所有可能的权限。

用户apache可以访问该文件:

# su apache -s /bin/sh -c "curl --unix-socket /run/mt_plackup_master.sock --head localhost"
HTTP/1.1 301 Moved Permanently
Location: some_sub_page/
Date: Tue, 18 Jan 2022 20:21:56 GMT
Connection: keep-alive

但是 Apache 提供 HTTP 503 服务不可用并写入错误日志:

[Tue Jan 18 21:16:32.738727 2022] [proxy:error] [pid 864514:tid 139775709259520] (13)Permission denied: AH02454: HTTP: attempt to connect to Unix domain socket /run/mt_plackup_master.sock (localhost) failed
[Tue Jan 18 21:16:32.738781 2022] [proxy_http:error] [pid 864514:tid 139775709259520] [client ::1:50532] AH01114: HTTP: failed to make connection to backend: httpd-UDS

这是 Rocky Linux 上的 Apache 2.4.37。

更新:按照要求

# ls -Z /run/mt_plackup_master.sock 
system_u:object_r:var_run_t:s0 /run/mt_plackup_master.sock

答案1

我试过

# chcon -t httpd_sys_rw_content_t /run/mt_plackup_master.sock

并且它似乎有效。这是 Web 应用程序套接字的正确 SELinux 上下文吗?有什么建议吗?

相关内容