Nginx Showing Welcome Page instead of homepage

July 2, 2019 875 views
CentOS Nginx

Nginx shows welcome page, its picking up from

/usr/share/nginx/html

But not from:

/home/nginx/domains/XYZDomain.com/public/

In Directory:

/etc/nginx/conf.d

2 Configurations Files:

default.conf

virtual.conf

default.conf file output

# Main Local

server {
        listen 80;
        server_name localhost;
        root   /usr/share/nginx/html;
        index index.php index.html index.htm;


        location / {
                try_files $uri $uri/ =404;
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/html;
        }

        #
        location ~ \.php$ {
                include fastcgi_params;
                #fastcgi_pass 127.0.0.1:9000;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        }

        location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
        }
        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }
        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

}

virtual.conf file output:

server {

            listen   80;
            server_name  www.XYZDomain.com;
            rewrite ^/(.*) http://XYZDomain.com/$1 permanent;

            location / {

                        root   /home/nginx/domains/XYZDomain.com/public/;
                        index  index.html;

                        }

}

nginx.conf file in /etc/nginx/nginx.conf output

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

All Directories with permissions.

ls -la /home/nginx/domains/XYZDomain.com

drwxr-s--- 6 root root 4096 Jul  1 12:54 .
drwxr-xr-x 3 root root 4096 Jul  2 14:44 ..
drwxr-s--- 2 root root 4096 Jun 30 15:58 backup
drwxr-s--- 2 root root 4096 Jun 30 15:58 log
drwxr-s--- 2 root root 4096 Jun 30 15:58 private
drwxr-sr-x 2 root root 4096 Jul  2 15:01 public

I have tried modifying default.php and virtual.conf file

Can Anyone can help me what’s wrong in this? I am really confused and have wasted a whole day on this.
I did reviewd other similar questions, google, etc.. but this seems weird.

9 comments
  • I tried changing

    defaulttype application/octet-stream;
    to
    default
    type text/html;

  • https://stackoverflow.com/questions/19285355/nginx-403-error-directory-index-of-folder-is-forbidden/19302688

    This helped me

    changing user in nginx.conf
    to root

    Though, I guess it can be harmful?

  • Hello,

    Exactly, do not run your web servers as root. It’s better to change the permissions and the ownership of the files and folders at /home/nginx/domains/XYZDomain.com/public/ to the nginx default user.

    You can do that with the chown command:

    chown -R your_nginx_user:your_nginx_user /home/nginx/domains/XYZDomain.com/public/
    

    Hope that this helps!
    Bobby

  • I always get
    403 Forbidden
    nginx/1.16.0

    http://prntscr.com/o9ynol

    On Changing user to nginx

    I did that to all the directories:

    sudo chown -R nginx:nginx /home/nginx/*
    sudo chown -R 0755 /home/nginx/*
    
    sudo chown -R nginx:nginx /home/nginx/domains/XYZDomain.com/*
    sudo chown -R 0755 /home/nginx/domains/XYZDomain.com/*
    
    sudo chown -R nginx:nginx /home/nginx/domains/XYZDomain.com/public/*
    sudo chown -R 0755 /home/nginx/domains/XYZDomain.com/public/*
    

    On tail

    tail -f /var/log/nginx/error.log

    2019/07/03 10:25:12 [error] 26313#26313: *3 "/home/nginx/domains/XYZDomain.com/public/index.html" is forbidden (13: Permission denied), client: 142.111.2xx.1xx, server: www.XYZDomain.com, request: "GET / HTTP/1.1", host: "XYZDomain.com"

    Checking /etc/passwd
    –x–
    nginx:x:498:498:nginx user:/var/cache/nginx:/sbin/nologin
    –x–

    Is something wrong in here?

  • I think that in this case it would be SELinux that’s causing the issue as you are running the website from /home rather than the default /var/www.

    Can you try running this command:

    setenforce permissive
    

    Let me know how it goes!
    Bobby

  • Show 4 more comments
1 Answer

This question was answered by @noors:

@bobbyiliev

setenforce: SELinux is disabled
Still, its behaving same.

Update:

Bobby, I transferred all the domain files into

/var/www/html/DOMAIN.com/public

and changed .conf file root directory accordingly.

Now it is working fine.
Is there anything else, I can/should/must do?

Thanks for everything.

View the original comment

Have another answer? Share your knowledge.