How to change the Nginx default folder?

Ido B asked:

I setup a server with Nginx and i set my Public_HTML in –

/home/user/public_html/website.com/public

And its always redirect to –

/usr/local/nginx/html/

How can i change this ?

Nginx.conf –

user www-data www-data;
worker_processes  4;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     off;
    keepalive_timeout  5;

    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types      text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    include /usr/local/nginx/sites-enabled/*;
}

/usr/local/nginx/sites-enabled/default –

 server  {
                listen       80;
                server_name  localhost;

                location /  {
                        root   html;
                        index  index.php index.html index.htm;
                               }

                # redirect server error pages to the static page /50x.html
                error_page   500 502 503 504  /50x.html;
                location = /50x.html
                               {
                                    root   html;
                               }
                    }

/usr/local/nginx/sites-available/website.com –

   server {
                listen 80;
                server_name website.com;
                rewrite ^/(.*) http://www.website.com/$1 permanent;
           }
    server {
                listen 80;
                server_name www.website.com;
                access_log
    /home/user/public_html/website.com/log/access.log;
                error_log
    /home/user/public_html/website.com/log/error.log;
                location / {
                            root
    /home/user/public_html/website.com/public/;
                            index index.php index.html;
                            }
                # pass the PHP scripts to FastCGI server listening on
                # 127.0.0.1:9000
                location ~ .php$
                                    {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include /usr/local/nginx/conf/fastcgi_params;
                fastcgi_param SCRIPT_FILENAME
    /home/user/public_html/website.com/public/$fastcgi_script_name;
                                    }
          }

The error message I get is

Fatal error: require_once() [function.require]: Failed opening required ‘/usr/local/nginx/html/202-config/functions.php’

the server try to find the file in the Nginx folder and not in my Public_Html

My answer:


You have placed your root directive within a location block, but it belongs in the server block just outside it. This is a very common nginx misconfiguration.

Once you move it to the correct spot, you should find your scripts start working.

server {
    #....
    root /home/user/public_html/website.com/public/;

    location / {

View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.