Nginx показывает страницу приветствия / ошибку 403 вместо домашней страницы - PullRequest
0 голосов
/ 02 июля 2019

Я использую 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;

                        }

}

Файл nginx.conf в /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;
    #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 ]

1 голос
/ 03 июля 2019

Похоже, это проблема с разрешениями. Nginx работает как пользователь nginx, но файлы принадлежат root и не имеют глобальных разрешений на чтение, то есть пользователь nginx не может их видеть.

Во-первых, не запускайте ngninx от имени root! Это очень плохо. Если кто-то скомпрометирует ваш сайт, он может получить 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 не имеет разрешений на запись и может только читать файлы. Однако это может вызвать другие проблемы, если у вас есть сценарии, которые должны динамически создавать или редактировать файлы.

В отношении разрешений и веб-серверов есть еще много чего, что может привести к проблемам с безопасностью, а здесь слишком много. Вы можете найти много информации на stackoverflow.com, если вам интересно.

0 голосов
/ 04 июля 2019

Одним из способов было изменить пользователя на root но это вредно.

Второй Перенести все файлы домена в

/var/www/html/XYZDomain.com/public Вместо из /home/nginx/domains/XYZDomain.com/public/

и измененный virtual.conf (в каталоге conf.d) файл из 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. Убедитесь, что ваш веб-каталог имеет права доступа

  7. Переключить SELinux, это может вызвать проблемы.

0 голосов
/ 03 июля 2019

Ошибка Nginx 403: индекс каталога [папки] запрещен

Изменение пользователя в /etc/nginx/nginx.conf от nginx до root

помогло ...

это вредно? или риск безопасности? Теперь это вопрос ...

Сообщество StackOverFlow & Thanks

Love

...