By jamesfacts
As the title says, I have a server where nginx was originally installed by the root user. I now want to run nginx as a non-root user, a new user that I added to both the sudo
the www-data
groups.
When I try to run nginx from this new user, I get the following message:
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2016/08/09 22:07:52 [warn] 17609#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
2016/08/09 22:07:52 [emerg] 17609#0: open() "/var/log/nginx/access.log" failed (13: Permission denied)
I’m confused why this is an issue—I changed the owner and group of /var/log/nginx/
to www-data
. The nginx master process user is root
, which I believe is correct, and the sub-processes are running (or trying to run) as www-data
. The file permissions for error.log
and 'access.log` are 755. What am I missing?
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Accepted Answer
I received some advice that solved my problem and seems to be sound counsel. I’m now starting the server from the non-root account using sudo and all is well. One little trick!
Your Nginx web-user isnt permitted to access the logs. Modify the permissions with:
sudo chown -R www-data:www-data /var/log/nginx;
sudo chmod -R 755 /var/log/nginx;
possible right answer is: sudo nginx -t try nginx self check from sudo user.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.