Перейти к содержимому


Фотография

apache2


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 07 Март 2019 - 21:18

Настроил веб сервер apache2 с загрузочным экраном для srcds сервера.

 

Теперь хочу дать возможность через http запрос скачивать один файл (назовем его fastdl.gma) по символьной ссылке.

 

Т.е. у меня имеется путь

/var/www/html/mysite/fastdl_link.gma 

где fastdl_link.gma является символьной ссылкой на /home/server/data/fastdl.gma

 

Однако при попытке скачать данный файл выбивает ошибку 403 со следующим текстом

You don't have permission to access *file* on this server.

 

Директории html и вложенные принадлежат пользователю www-data, из-под которого работает apache2

Права на чтение файла следующие: (0644/-rw-r--r--)

 

В sites-available в конфиг файле указано

<Directory /var/www/html/mysite>

Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

 

Где опция FollowSymLinks должна позволить мне получать доступ к файлам по символьным ссылкам.

 

И самое интересное, на тестовом сервере такая схема работает замечательно, а на основном ни в какую. Хотя я сверил конфиги и права, вроде бы, все совпадает.

Может что-то упустил. :\

UPD: если использовать hard link, то файл скачать могу.


Сообщение отредактировал Erazor: 07 Март 2019 - 21:19


#2 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 081 сообщений

Отправлено 07 Март 2019 - 22:06

Тему нужно было создавать в разделе "Выделенные сервера и VDS".

 

Вообще, стоило бы начать с чтения логов. Там будет написано по какой причине не удается получить доступ к файлу.

Можно в Options попробовать добавить +SymLinksIfOwnerMatch.



#3 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 07 Март 2019 - 23:58

В конфиге прописаны эти два лог файла. Я их чекнул, они пустые. 
 
ErrorLog ${APACHE_LOG_DIR}/fastdl.com_error.log
CustomLog ${APACHE_LOG_DIR}/fastdl.com_access.log combined
 
Добавление +SymLinksIfOwnerMatch в конфиг так же не возымело положительного эффекта =\
 
 
 
Извиняюсь за то, что тему не там создал. Был бы рад, если бы ее перенесли в соответствующий раздел.

Сообщение отредактировал Erazor: 08 Март 2019 - 0:08


#4 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 081 сообщений

Отправлено 08 Март 2019 - 1:16

По-хорошему, вообще nginx должен такие файлы отдавать. И с ним такой проблемы ни разу не наблюдал. Нормально без редактирования прав отдает файлы через симлинки. Хоть всю директорию скорми ему. 

Apache же не должен статику отдавать.



#5 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 08 Март 2019 - 1:45

Попробую завтра nginx и отпишусь



#6 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 09 Март 2019 - 22:45

Поставил nginx.

Два раза попробовал по разным гайдам создать блок сервера и закинуть свой index.html. Но по ссылке *IP*/mydomain.ru я получаю ошибку 404 not found.

Если просто ввести *IP*, то я попадаю на страничку "Welcome to nginx!".

 

Пробовал по этим гайдам:
https://andreyex.ru/...nx-na-debian-9/
https://www.8host.co...inx-v-debian-9/



#7 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 081 сообщений

Отправлено 09 Март 2019 - 23:27

Конфиги - в студию.



#8 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 10 Март 2019 - 0:08

В sites-available
лежит "reborndl.ru.conf"

 

Там следующий текст:
 

server {
       listen 80;
       listen [::]:80;

       server_name reborndl.ru www.reborndl.ru;

       root /var/www/reborndl.ru;
       index index.html;

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

В sites-enabled прописана символьная ссылка на этот конфиг через ln -s

 

По этому пути лежит index.html

/var/www/reborndl.ru



#9 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 081 сообщений

Отправлено 10 Март 2019 - 0:30

Что еще есть в sites-enabled? Какой-нибудь default может, который слушает 80 порт с прописанным server_name _;?



#10 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 10 Март 2019 - 1:58

Есть симлинк на default конфиг, в нем следующее 

 

Скрытый текст


#11 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 081 сообщений

Отправлено 10 Март 2019 - 3:24

rm /etc/nginx/sites-enabled/default

service nginx reload



#12 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 10 Март 2019 - 17:35

Выполнил обе команды, не помогло.

 

По адресу http://37.230.137.94/ я вижу дефолтную стартовую страничку nginx с сообщением welcome.

Но если я попробую зайти в кастомный блок сервера http://37.230.137.94/reborndl.ru , то ловлю 404

 

Еще раз все перепроверяю.

 

/var/www/reborndl.ru принадлежит www-data. Права на директорию следующие: drwxr-xr-x

Index.html, лежащий внутри, также принадлежит www-data. Права на файл следующие: -rw-r--r--

 

Далее в /etc/nginx/sites-available имеется конфиг reborndl.ru.conf с текстом

Скрытый текст

 

В sites-enabled имеется симлинк на этот конфиг. 

Сами конфиги, как и файлы nginx пренадлежат root. Права конфиге -rw-r--r--

 

Вроде бы, все правильно? Но желаемый результат не достигнут =(
 



#13 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 081 сообщений

Отправлено 10 Март 2019 - 17:56

Сделай так тогда:

listen 80 default_server;
listen [::]:80 default_server;

Не работает потому что косячишь где-то в конфигах.

И привязываешь домен, а пытаешься по IP зайти - зачем? В чем логика?



#14 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 10 Март 2019 - 18:04

Потому что доменное имя не куплено. А находится веб сервер удаленно на выделенной машине. Значит никаким другим образом, кроме как по IP, я к нему обратиться не могу, если я правильно понимаю.


Действительно, есть где-то косяк в конфигах.

 

rebornserver@ds16898:/etc/nginx/sites-available$ sudo nginx -t

nginx: [emerg] dlopen() "/usr/share/nginx/modules/ngx_http_dav_ext_module.so" failed (/usr/share/nginx/modules/ngx_http_dav_ext_module.so: cannot open shared object file: No such file or directory) in /etc/nginx/modules-enabled/50-mod-http-dav-ext.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed


Хотя я ничего за пределами sites-abailable и sites-enabled в директории nginx не редактировал



#15 ykpon

ykpon

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 4 081 сообщений

Отправлено 10 Март 2019 - 18:21

Тогда зачем ты пытаешься настраивать с доменом? Ставь server_name _ и listen 80 default_server.



#16 Erazor

Erazor

    Новичок

  • Пользователь
  • Pip
  • 9 сообщений

Отправлено 10 Март 2019 - 22:31

Короче, вернулся на apache2 и сделал все заново. Все таки решил свою проблему.

 

Из того, что помогло мне в решении.

 
Данной командой можно проверить, может ли apache2 увидеть файл по симлинку
sudo -u www-data ls -l /var/www/html/<your symlink>/
 
Ну и для файла, который apache2 должен скормить пользователю, пославшему GET Запрос, нужно установить права chmod o+x. 
 
На этом тему можно закрывать.



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных