Nginx显示欢迎页面/ 403错误而不是主页

时间:2019-07-02 17:26:51

标签: nginx server vps centos6.8

我正在使用CentOs 6.8

在开发模式下使用CloudFlare DNS

Nginx显示欢迎页面,它来自

  

/ usr / share / nginx / html

但不是来自:

  

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

在目录中

  

/etc/nginx/conf.d

2个配置文件:

  

default.conf
  virtual.conf

default.conf文件输出

# 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文件输出:

server {

            listen   80;
            #server_name  www.XYZDomain.com;
            # Now Changed to below withouth wwww.
            server_name  XYZDomain.com;
            rewrite ^/(.*) http://XYZDomain.com/$1 permanent;

            location / {

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

                        }

}
在/etc/nginx/nginx.conf输出中的

nginx.conf文件

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;
    #changed to text/html
    default_type text/html;
    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;
}

所有具有权限的目录。

  

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

我尝试修改default.php和virtual.conf文件

任何人都可以帮我解决这个问题吗?我真的很困惑,并为此浪费了一整天。

3 个答案:

答案 0 :(得分:1)

这似乎是一个权限问题。 Nginx以nginx用户身份运行,但是文件归root所有,并且不具有全局读取权限,这意味着nginx用户无法看到它们。

首先,不要以root用户身份运行ngninx!。这非常糟糕。如果有人破坏了您的网站,则他们可能具有对该服务器的root访问权限。

有几种解决方法。最简单的方法是将文件的所有者更改为nginx

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

当然,您必须记住对创建的任何新文件执行此操作

您还可以仅将文件的组更改为nginx,并使它们可读:

chgrp -R nginx /home/nginx/domains/XYZDomain.com
chmod -R g+r /home/nginx/domains/XYZDomain.com

第二种方法更安全一些,因为nginx没有写权限,只能读取文件。但是,如果您有需要动态创建或编辑文件的脚本,这可能会导致其他问题。

关于权限和Web服务器,还有很多要涉及的内容,其中涉及很多安全方面的内容,在此不做过多介绍。如果您感到好奇,可以在stackoverflow.com上找到大量信息。

答案 1 :(得分:0)

Nginx 403 error: directory index of [folder] is forbidden

/etc/nginx/nginx.conf中更改用户 从 nginxroot

已帮助...

有害吗?还是安全隐患?现在多数民众赞成在一个问题...

感谢StackOverFlow和感谢社区

答案 2 :(得分:0)

一种方法是将用户更改为root 但这很有害。

第二是 将所有域文件传输到

/var/www/html/XYZDomain.com/public 代替/home/nginx/domains/XYZDomain.com/public/

从更改了{strong> conf.d目录中的virtual.conf文件 root /home/nginx/domains/XYZDomain.com/public; root /var/www/html/XYZDomain.com/public

需要注意的是:

  1. 检查多余的空间

  2. 从网络复制的代码可能会导致问题

  3. 始终运行nginx -T来检查错误

  4. 始终在测试之前重新启动Nginx service nginx restart

  5. 运行tail -f /var/log/nginx/error.log来检查最新的错误日志

  6. 确保您的Web目录具有访问权限

  7. 切换SELinux,这可能会导致问题。