Ubuntu

Ubuntu 中的 Nginx 無法訪問 ssl 證書

  • June 14, 2017

我已經在 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仍然返回相同的錯誤。

您似乎以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

它必須可以通過 nginx 使用者或組訪問,例如 www-data。表示啟動 nginx 的使用者。

嘗試:

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

引用自:https://serverfault.com/questions/798612