Надеюсь, это подходящее место для публикации.
У меня есть CentOS 6 VPS, на котором размещено несколько сайтов. На нем сейчас работают три сайта, но сейчас я пытаюсь добавить четвертый и всегда получаю приветственную страницу "Welcome to nginx on Fedora!", когда захожу на URL (назовем его nginxFail.com).
Я поместил файл test.txt в /home/nginxFail/www и попытался перейти на nginxFail.com/test.txt. Он выдал ошибку 403. nginxFail.com/nosuchfile.txt и nginxFail.com/nosuchdir также выдают ошибку 403.
Что я уже попробовал:
-Проверка информации о домене: Информация о домене на новом домене и трех других доменах абсолютно одинакова, включая информацию SPF. У нового домена было около 5 дней на распространение.
-Проверка httpd.conf: Вот что у меня есть:
<VirtualHost *:80>
DocumentRoot /home/**nginxFail**/www
ServerName **nginxFail.com**
ServerName **<my server IP>**
ErrorLog /var/log/httpd/**<errorLog>**
CustomLog /var/log/httpd/access_log combined
<Directory "/home/**nginxFail**/www">
Options +Indexes FollowSymLinks +ExecCGI
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Конечно, записи, выделенные жирным шрифтом, настроены на мою фактическую информацию. Это та же самая настройка, что и другие записи в этом файле, которые заставляют работать остальные три сайта.
Также вот сокращенный /etc/nginx/nginx/conf:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
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 0;
keepalive_timeout 65;
#gzip on;
# Load config files from the /etc/nginx/conf.d directory
include /etc/nginx/conf.d/*.conf;
#
# The default server
#
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
-Перезапуск сервера (и /etc/init.d/httpd). Не помогло.
-Пытаюсь на другой машине: я читал, что проблема с nginx может быть результатом вируса или файла хоста. Мои машины всегда чисты (постоянные сканирования на вирусы, не доверяю сканированиям ошибок браузера, ха-ха), и мой файл хоста кажется чистым. Просто ради прикола я попробовал зайти на сайт с другого компьютера и даже с телефона, и получил ту же страницу nginx.
-Google: Это меня подвело! :o, вот как я узнал об очистке браузера.
-Проверка прав доступа: на моем сервере все сайты перечислены в собственной папке в каталоге /home/. Именно туда я и поместил новую запись сайта. Как уже говорилось, три других сайта работают нормально, так что проблема не в правах доступа к /home/, и я убедился, что home/nginxFail/www имеет права 755 (как и другие работающие сайты).
-просмотр каталога /etc/nginx/: я заметил, что нет каталога sites-enabled. Я видел в другом вопросе, что это может быть причиной, но если это так, почему 3 других веб-сайта работают нормально?
-Просмотр журналов: я не нашел ничего в var/log, кроме подтверждения того, что веб-сервер получает HTTP-запрос и выдает 403. После посещения упомянутого выше файла test.txt я просмотрел каталог журналов на предмет изменения дат модов, чтобы узнать, какие файлы следует искать.
- Устная просьба к сайту прекратить показ nginx и показать мой сайт: безуспешно.
-Покопавшись в /etc/nginx: я читал, что там есть каталог sites-available, который должен мне помочь, но я его не вижу, когда вхожу в систему как root.
Я немного растерялся.
EDIT: Я провел более детальное исследование проблемы и, похоже, виноват странный конфликт между Apache и nginx.
Сайт работает на Apache 2.2.23, и, похоже, nginx также был установлен, вероятно, по ошибке. Страницы 403, которые я получаю, означают, что Apache включился, но переход на сам домен почему-то перебрасывает меня на nginx. Моя естественная мысль была остановить nginx с помощью /etc/init.d/nginx -s stop
. Когда я делаю это и возвращаюсь на nginxfail.com, страница nginx все еще отображается. Когда я это делаю, я ps -ef | grep nginx
вижу, что процесс nginx запущен даже после того, как я его остановил, и, насколько мне известно, на сервере не должно быть никаких скриптов, которые автоматически его перезапускают.
Вот тут-то и начинается самое интересное: когда я это делаю /etc/init.d/httpd stop
, ВСЕ 4 сайта умирают, включая nginxfail.com и 3 других рабочих сайта, а когда я снова включаю httpd, возникает та же ситуация, что и в моем первом сообщении.
Я посмотрел в /etc/httpd/error_log и получил ошибку «Клиент отклонен конфигурацией сервера: /home/nginxfolder/www/». Я проверил разрешения, так что веб-сервер (я почти уверен, что в данном случае это Apache) ищет в правильном месте.
Извините, если это расплывчато и не очень хорошо иллюстрирует мою установку. Есть ли какая-то другая конкретная информация, которая поможет?