Nginx не обнаруживает сайт на сайтах с включенной поддержкой?

105

После более чем 10 часов исследований я так и не понял, почему это не работает! Я пытаюсь переместить свой локальный хост в папку с поддержкой сайтов, которая находится в / etc / nginx / sites-enabled / default.

Это символическая ссылка из папки с доступными сайтами. При использовании следующей конфигурации я получаю сообщение «невозможно подключиться» с использованием localhost: 8080 в качестве моего адреса.

nginx.conf (/usr/local/nginx/conf/nginx.conf):

user  www-data;
worker_processes  2;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    include /etc/nginx/sites-enabled/*; 
}

сайты-доступные (/ etc / nginx / sites-available / default):

server {
  listen   8080;
  root /home/myusername/myown/customdirectory;
  index index.php index.html index.htm;
  server_name localhost;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        allow ::1;
        deny all;
    }


    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/www;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

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

Спасибо!

Discorick
источник
2
Вы уверены, что символическая ссылка не нарушена? ls -l / etc / nginx / sites-enabled /
catalin.costache
1
Да, я дважды проверил символическую ссылку, все равно не повезло
Discorick
см. также: askubuntu.com/questions/1195067/… .
Крис Хэлкроу

Ответы:

200

У меня такая же проблема. Это произошло потому, что я случайно использовал относительный путь с символической ссылкой.

Вы уверены, что использовали полные пути, например:

ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Сэм
источник
Для меня это тоже исправило! Спасибо!
Sander Versluys
4
Спасибо за спасение моей жизни!
MatTheCat
4
Может быть проблема с неправильным путем в относительной ссылке больше, чем с относительной ссылкой вообще. Например, если ваша ссылка не начинается с ../перехода на один каталог вверх, введите sites-available. Если вы можете catиспользовать символическую ссылку и получить вывод, Nginx должен прочитать ее также, как сказал @Hannes. Использование абсолютного пути просто делает неправильный путь намного более трудным.
Bryson
нет ли инструмента командной строки для получения абсолютного пути к файлу?
Не могу поверить, что это была проблема. Не догадалась бы проверить это! Спасибо!
phouse512
39

Переход с:

include /etc/nginx/sites-enabled/*; 

к

include /etc/nginx/sites-enabled/*.*; 

исправил мою проблему

Рой Роблес
источник
2
исправил проблему и для меня в Ubuntu 16.xx
Ян Вимерс
2
как ты это понял? У меня это сработало, но это не очевидно
afarley
2
это исправлено для меня при игре с nginx и Docker.
Eugen
1
то же самое, исправлено на образе ubuntu / trusty64
Bryan A
2
Это было проблемой для меня! Но в моем случае он искал * .conf, и у меня был другой конец. Безумно, я потратил на это часы!
Найджел
16

Включить sites-available/defaultв sites-enabled/default. Требуется всего одна строка.

В sites-enabled/default(новая версия конфигурации?):

Кажется, что путь включения относится к файлу, который его включил

include sites-available/default;

См. includeДокументацию .


Я считаю, что некоторые версии nginx позволяют включать / связывать с другими файлами просто, имея одну строку с относительным путем к включенному файлу. (По крайней мере, так это выглядело в некоторых "унаследованных" конфигурационных файлах, которые я использовал, пока новая версия nginx не сломала их.)

В sites-enabled/default(старая версия конфигурации?):

Кажется, что путь включения относительно текущего файла

../sites-available/default
Джоэл Пурра
источник