nginx не слушает порт 80

53

Я только что установил сервер Ubuntu 12.04 и nginx 1.2.7, удалил default с сайтов и добавил свой собственный файл в sites-available и символическую ссылку в sites-enabled. Затем перезапустили nginx.

Проблема: Однако при переходе на URL-адрес не загружается сайт. netstat -nlp | grep nginx и netstat -nlp | grep 80 оба не возвращают результата! lsof -i :80 также ничего не возвращает. A dig с другого сервера возвращает правильный IP-адрес, поэтому он не должен быть проблемой DNS. Мне удалось подключиться к apache, который я сейчас прекратил. Журналы nginx также ничего не показывают.

Как устранить эту проблему?

/etc/nginx/site-available/mysite.com

server {
    listen   80;
    server_name www.mysite.com mysite.com *.mysite.com;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    root /var/www/mysite/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args ;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_read_timeout 300;
    }

}
  • 0
    что-нибудь в логах?
  • 0
    Это на самом деле работает? Вы начали это с sudo ?
Показать ещё 4 комментария
Теги:
nginx
ubuntu-12.04

6 ответов

100

У меня была такая же проблема, решение заключалось в том, что я не правильно привязал свой файл siteconf. Попробуйте запустить vim /etc/nginx/sites-enabled/mysite.com - вы можете добраться до него? Я получаю "Разрешение отклонено".

Если не запустить:

rm /etc/nginx/sites-enabled/mysite.com
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com
  • 44
    Это исправило это для меня! Очевидно, когда вы не вводите полное имя файла во втором аргументе, то есть ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/ , это создает своего рода поддельную символическую ссылку, который nginx задыхается. Удивительно, но факт.
  • 0
    Это было решением для меня тоже. Наткнулся на эту ветку, пока гуглил ответы.
Показать ещё 12 комментариев
19

Если в ваших журналах ничего не говорится об этой проблеме, вы не можете включать каталог с поддержкой сайтов. Один простой способ сказать, что сайт загружается, - установить путь журнала ошибок/доступа в пределах вашего блока сервера к уникальному пути, перезагрузить nginx и проверить, созданы ли файлы.

Убедитесь, что в контексте http в /etc/nginx/nginx.conf существует директива include include.

http {
  ...
  include /etc/nginx/sites-enabled/*;
}
  • 2
    Такая простая вещь, чтобы пропустить. Спасибо за упоминание этого!
  • 0
    Большое спасибо! Ты спас мой день
4

Вы, вероятно, дважды привязываете nginx к порту 80. Это ваш полный файл конфигурации? У вас нет другого заявления, слушая порт 80?

  • 0
    Я пытался разместить GitLab на порту 80, но обнаружил, что к этому порту также привязан сайт по умолчанию. После удаления последнего мой хост GitLab работал нормально.
  • 0
    @riezebosch удаление конфигурации этого сайта должно работать, но вы также можете использовать разные имена серверов в случае, если вы хотите прослушивать порт 80 несколько раз
3

Я столкнулся с той же проблемой, я получил ошибку Failed to load resource: net::ERR_CONNECTION_REFUSED при подключении через HTTP, но отлично по HTTPS. Ran netstat -tulpn и увидел, что nginx не привязан к порту 80 для IPv4. Сделано все, что описано здесь. Оказалось, что это что-то очень глупо:

Убедитесь, что файл sites-available с default_server действительно включен.

Надеюсь, что это немного спасло другого бедного идиота.

1

Полуколона ; отсутствует в /etc/nginx/nginx.conf для примера на линии до include /etc/nginx/servers-enabled/*; может просто обойти эту конструкцию, а проверка nginx -t в любом случае будет успешной.

Итак, просто проверьте, что все команды в /etc/nginx/nginx.conf заканчиваются точкой с запятой ;.

1

Вы проверили, действительно ли существует ваш nginx-бинарный файл? проверьте,

#whereis nginx

выводит двоичный путь и проверяет этот путь с помощью init script от /etc/init.d/nginx. например.

DAEMON=/usr/sbin/nginx

(В моем init script "test -x $DAEMON || exit 0" вызывается и в любом случае этот script ничего не возвращает - мой двоичный файл полностью отсутствует)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню