nginx 403 forbidden ...

January 11, 2014 62.3k views
I used this article https://www.digitalocean.com/community/articles/how-to-set-up-nginx-virtual-hosts-server-blocks-on-ubuntu-12-04-lts--3 to setup virtual hosts on nginx but I'm getting a 403 forbidden error. The article tells us to do this to set permissions `You can replace the "www-data" below with the appropriate username. sudo chown -R www-data:www-data /var/www/example.com/public_html Additionally, it is important to make sure that everyone is able to read our new files. sudo chmod 755 /var/www` I therefore did this with my username sudo chown -R username:username /var/www/example.com/public_html but I'm still getting the 403 forbidden errror. Do you know anything I can try?
8 Answers
Do you have a file called index.html in /var/www/mydomain.com/public_html?
Hi,

The username used in the chown command should be the ones which nginx runs with - you can check that by running the command:
ps -ef | grep nginx (You are looking at the first column on any of the nginx worker processes

Once you chown with the good username you also need to restart nginx:
/etc/init.d/nginx restart
Thanks, this was the output of ps -ef | grep nginx

root 14130 1 0 16:06 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 14132 14130 0 16:06 ? 00:00:00 nginx: worker process
www-data 14133 14130 0 16:06 ? 00:00:00 nginx: worker process
www-data 14134 14130 0 16:06 ? 00:00:00 nginx: worker process
www-data 14135 14130 0 16:06 ? 00:00:00 nginx: worker process
michael 14900 14326 0 17:35 pts/2 00:00:00 grep --color=auto nginx


Therefore, was I correct to do this?
sudo chown -R username:username /var/www/example.com/public_html

This is what the tutorial says this

`You can replace the "www-data" below with the appropriate username.
sudo chown -R www-data:www-data /var/www/example.com/public_html

right now I'm signed in as `michael` can I fix this problem
chown with www-data:www-data and restart nginx - that should fix the 403 error
I did this but I'm still getting the error

sudo chown -R www-data:www-data /var/www/mydomain.com/public_html

sudo service nginx restart
* Restarting nginx nginx
@Kamal Nasser, I'm Having the same problem. If i keep the index.html file when i go to the domain I see this "Success: You Have Set Up a Virtual Host" if I remove it I get the "403 forbidden error" any solution to this. thanks in advance
@doper408: Simply replace index.html with your own index.html that you want to use and you should be fine. If it's a PHP app, replace index.html with your own index.php file and make sure the index directive is set to index.php index.html (e.g.: index index.php index.html;) in your nginx's virtual host config.
@Kamal Nasser , thanks a lot that work great, but only for the main page when a visit a page for example, domain.com/example I get "500 Internal Server Error" any suggestion to fix this. thanks in advance
  • This is the step that I've done and it's work:

    sudo chown -R www-data:www-data /usr/share/nginx/html/*
    sudo chmod -R 0755 /usr/share/nginx/html/*
    

    This step is done on Ubuntu 14.04

Have another answer? Share your knowledge.