我已经在 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/