Directory index of is forbidden: server — 403 Forbidden: directory index of «/path/to/files» is forbidden Nginx

php — Индекс каталога Nginx «/var/www/html/» запрещен

У меня есть приложение PHP, но я не могу заставить Nginx работать с ним. Я проверил разрешения и конфигурацию nginx, но не могу найти проблему.

/etc/nginx/nginx.conf

 # Для получения дополнительной информации о настройке см.:
# * Официальная документация на английском языке: http://nginx.org/en/docs/
# * Официальная русскоязычная документация: http://nginx.org/ru/docs/
пользователь nginx;
рабочие_процессы авто;
журнал_ошибок /var/log/nginx/error.log;
pid /run/nginx.pid;
# Загрузить динамические модули. См. /usr/share/doc/nginx/README.dynamic.
включить /usr/share/nginx/modules/*.conf;
События {
    worker_connections 1024;
}
http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$статус $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    журнал_доступа /var/log/nginx/access.log основной;
    отправить файл включен;
    tcp_nopush включен;
    tcp_nodelay включен;
    keepalive_timeout 65;
    типы_хэш_макс_размер 2048;
    включить /etc/nginx/mime.
types; default_type application/octet-stream; # Загрузите файлы модульной конфигурации из каталога /etc/nginx/conf.d. # См. http://nginx.org/en/docs/ngx_core_module.html#include # Чтобы получить больше информации. включить /etc/nginx/conf.d/*.conf; сервер { слушать 80 default_server; слушать [::]:80 default_server; имя сервера _; корень /var/www/html; # Загрузить файлы конфигурации для блока сервера по умолчанию. включить /etc/nginx/default.d/*.conf; расположение / { } страница_ошибки 404 /404.html; местоположение = /404.html { } error_page 500 502 503 504 /50x.html; местоположение = /50x.html { } } # Настройки для сервера с поддержкой TLS. # # сервер { # слушаем 443 ssl http2 default_server; # слушать [::]:443 ssl http2 default_server; # имя сервера _; # корень /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.
key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10 м; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # # # Загрузить файлы конфигурации для блока сервера по умолчанию. # include /etc/nginx/default.d/*.conf; # # расположение / { # } # # error_page 404 /404.html; # местоположение = /404.html { # } # # error_page 500 502 503 504 /50x.html; # местоположение = /50x.html { # } # } 9/(config|temp|журналы)/ { отрицать все; } расположение ~/\. { отрицать все; доступ_лог выключен; log_not_found выключен; } расположение ~ \.php$ { включить /etc/nginx/fastcgi_params; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

Мои разрешения

 /var/www/html
 dr-xr-xr-x корень корень /
 drwxr-xr-x nginx nginx переменная
 drwxr-xr-x nginx nginx www
 drwxr-xr-x nginx nginx HTML
 

Теперь, когда я захожу на свой веб-сайт, я получаю загрузку файла index. php. Я знаю, что это проблема с PHP. На сервере Apache я бы проверил обработчик, владельца и разрешения, но с nginx я не уверен, что делать. Мои разрешения выглядят нормально

 stat /var/www/html/index.php
  Файл: '/var/www/html/index.php'
  Размер: 12843 Блоки: 32 Блок ввода-вывода: 4096 обычный файл
Устройство: f650b601h/4132484609d Инод: 138577 Ссылки: 1
Доступ: (0644/-rw-r--r--) Uid: (997/nginx) Gid: (993/nginx)
 

Когда я захожу в каталог установщика своего приложения, который находится в /var/www/html/installer, появляется ошибка 403

Мой журнал ошибок

2021/02/11 22:12:56 [ошибка] 23013# 0: *43 индекс каталога «/var/www/html/installer/» запрещен, клиент: xx.254.113.xx, сервер: _, запрос: «GET /installer/ HTTP/1.1», хост: «www. xxx.com»

 php -v
PHP 7.4.15 (cli) (построено: 2 февраля 2021 г., 14:19:57) (NTS)
Авторское право (c) Группа PHP
Zend Engine v3.4.0, авторское право (c) Zend Technologies
 

Кто-нибудь может указать на мою проблему? Я действительно думаю, что это PHP, потому что я пробовал несколько разных конфигураций для своих файлов nginx.

сервер — 403 Запрещено: индекс каталога «/path/to/files» запрещен Nginx

Я хочу быть очень осторожным здесь, потому что мне просто пришлось уничтожить весь мой сервер и построить заново с нуля (полный кошмар), потому что я попытался исправить эту ошибку, следуя совету, например

 sudo chown -R пользователь: пользователь *
sudo chmod 755 [имя каталога]
судо чмод 644 *
 

и в конечном итоге сильно испортил мои разрешения и сломал всю систему Ubuntu.

Я также последовал совету из других подобных вопросов, чтобы удалить второй $uri из моей конфигурации Nginx, и это не решило проблему.

Мой user1 имеет привилегии root, предоставленные usermod -aG sudo user1

Мой журнал ошибок Nginx говорит

 06.03.2019 17:45:40 [ошибка] *1 индекс каталога "/home/user1/app/src/apr/" запрещен
 

И мое доменное имя показывает

 403 Запрещено
 

пс -эф | grep nginx возвращает

 root 15419 1 0 17:45 ? 00:00:00 nginx: главный процесс /usr/sbin/nginx -g демон включен; master_process включен;
www-данные 15420 15419 0 17:45 ? 00:00:00 nginx: рабочий процесс
user1 15503 15462 0 18:00 pts/1 00:00:00 grep --color=auto nginx
 

Моя конфигурация nginx

 сервер {
    слушать 80;
    #listen [::]:80 ipv6only=on;
    имя_сервера your. server.com;
    журнал_доступа /etc/nginx/access.log;
    корень /var/www/html/someroot;
    расположение / {
            #автоиндекс включен;
            # Сначала пытаемся обслужить запрос как файл, затем
            # в качестве каталога, затем вернуться к отображению 404.
            # try_files $uri =404;
            #proxy_set_header X-Real-IP $remote_addr;
            #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #proxy_set_header Хост $http_host;
            #proxy_set_header X-NginX-Proxy true;
            #proxy_pass http://127.0.0.1:8080/;
            #proxy_redirect выключен;
            #прокси_http_версия 1.1;
            #proxy_set_header Обновление $http_upgrade;
            #proxy_set_header Соединение "upgrade";
            #proxy_redirect выключен;
            #proxy_set_header Схема X-Forwarded-Proto $;
            #proxy_cache один;
            #proxy_cache_key схема sfs$request_uri$;
    }
    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/some/fullchain.
pem; # под управлением Certbot ssl_certificate_key /etc/letsencrypt/live/some/privkey.pem; # под управлением Certbot включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot если ($схема != "https") { вернуть 301 https://$host$request_uri; } }
  • nginx
  • сервер
  • http-status-code-403
  • pid

4

Я предлагаю использовать сервер приложений для облегчения связи между Django и Nginx.

Вы можете использовать что-то вроде uWSGI.

Вот ссылка на официальную документацию —

https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

Или хотите вариант попроще —

https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-14-04

Существуют и другие варианты, например, для пушкикорна — https://tutos.readthedocs.io/en/latest/source/ndg. html

1

Во-первых, мне пришлось добавить это в мою конфигурацию Nginx, о чем я узнал из другого вопроса, который я задал.

 восходящий сокет {
    ip_хеш;
    сервер $DAPHNE_IP_ADDRESS$ fail_timeout=0;
}
сервер {
...
расположение / {
    прокси_пароль http://сокет;
    прокси_http_версия 1.1;
    proxy_set_header Обновить $http_upgrade;
    proxy_set_header Соединение "обновление";
}
...
}
 

В этот момент я увидел ошибку 404 . Я решил это, изменив

try_files $uri =404; от до try_files $uri $uri/ =404; , однако это привело к появлению ошибки 403 Forbidden на всех страницах, кроме домашней. Ключ был в том, чтобы вынуть try_files; в целом и приложение теперь работает отлично.

Я также настроил Supervisord , следуя документации по каналам, для непрерывного запуска Daphne .

попробуйте раскомментировать автоиндекс включен; Директива в блоке местоположения .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *