Ubuntu 中的 Nginx 无权访问 SSL 证书

Ubuntu 中的 Nginx 无权访问 SSL 证书

我已经在 Ubuntu 16 上生成了一个证书,并且正在尝试运行 nginx 并获取此信息:

$ nginx -t

nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
nginx: [emerg] BIO_new_file("/etc/letsencrypt/live/my_website.com/fullchain.pem") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/letsencrypt/live/my_website.com/fullchain.pem','r') error:2006D002:BIO routines:BIO_new_file:system lib)
nginx: configuration file /etc/nginx/nginx.conf test failed

该证书具有标准权限lrwxrwxrwx 1 root root。但为什么 nginx 无法访问它?当然可以,chmod 755但这样做正确吗?

重新启动后,nginx 可以正常工作,我的网站也可以正常工作,但nginx -t仍然返回相同的错误。

答案1

您似乎正在nginx -t以非特权用户身份运行。

要测试你的 nginx 配置,请尝试:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

或者,如果sudo不可用:

$ su -
Password:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

答案2

它必须可以通过 nginx 用户或组(如 www-data)访问。它表示启动 nginx 的用户。

尝试:

# setfacl -R -m u:www-data:rx /etc/letsencrypt/

相关内容