LINUX.ORG.RU
ФорумAdmin

Nginx не отвечает на запросы браузера

 ,


0

1

Здравствуйте.

У меня странная проблема, установил ngingx + php-fpm + MySQL на выделенный сервер под управлением Ubuntu 14.04, но ни после установки, ни после правки конфигов при попытке доступа к серверу по ip он не отвечает. Я пробовал nginx из стандартного репозитория Ubuntu версии 1.4.6 и nginx из официального стабильного репозитория версии 1.6.2. При этом если проверять локально, то nginx работает прекрасно и всё отдаёт (если обращаться по localhost или по ip). Порт nginx слушает (netstat -plutn):

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5124/nginx.conf

Пакеты от меня до сервера вроде тоже доходят нормально, по крайней мере после запуска tcpdump -i any port 80 и попытке перейти в браузере по ip сервера в консоли сервера начинается движуха. В файерволле пробовал добавлять правило разрешающее 80 порт (хотя ничего там не запрещено) и так же пробовал отключать файерволл совсем. Логи nginx пустые. Уже замучился гуглить, но решения так и не нашёл. Подскажите, пожалуйста, куда копать?

Конфиг sites-available:

server {
listen 80 default_server;
server_name localhost;
root /home/webmaster/sites/default/docs;
index index.php index.html index.htm;
access_log /home/webmaster/sites/default/logs/access.log;
error_log /home/webmaster/sites/default/logs/error.log;
}

P.S. Симлинк с sites-available на sites-enabled проверял и пересоздавал.

Ответ на: комментарий от Goury

главное - он написал тег «убунту», а остальное влияет на работоспособность мало!

darkenshvein ★★★★★
()
Ответ на: комментарий от deep-purple

server_name localhost;
Хы ))

Я пробовал и с server_name _; и вообще без него, но это же вроде не должно влиять ведь в listen указано default_server и поэтому при несовпадении имени хоста он всё равно должен обрабатывать именно этот server, разве нет?

SuperSonic
() автор топика
Ответ на: комментарий от SuperSonic

У меня указано просто листен 80 без дефолт сервер. Первая секция server {} и будет дефолтной по идее. А сервер наме вообще убери оттуда, тем более что в твоем случае он заворачивает на локалхост.

deep-purple ★★★★★
()
Ответ на: комментарий от CHIPOK

netstat -ntple

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          100959      5124/nginx.conf 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          10346       851/sshd        
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      105        81709       4335/mysqld     

/home/webmaster
лорчую что с правами не все гуд, небойсь и сам сайт у тебя там лежит...

Сайт, точнее страничка пока одна, лежит в /home/webmaster/sites/default/docs, права на папку docs и файлам внутри ней принадлежат пользователю www-data, от имени которого и запускается nginx. Тем более, если бы были проблемы с правами, то локально бы тоже не работало, но локально nginx отдаёт страницу нормально.

SuperSonic
() автор топика
Ответ на: комментарий от deep-purple

У меня указано просто листен 80 без дефолт сервер. Первая секция server {} и будет дефолтной по идее. А сервер наме вообще убери оттуда, тем более что в твоем случае он заворачивает на локалхост.

Прописал просто listen 80; и убрал server_name, перезагрузил nginx, всё осталось без изменений.

SuperSonic
() автор топика
Ответ на: комментарий от CHIPOK

поставь на сервер lynx и сходи на локалхост, так будет правильнее

Поставил. С конфигом как в начале темы и по localhost и по ip открывает страницу нормально, но когда я заменил на просто listen 80; и убрал server_name localhost;, то по ip нормально загружает, а по localhost ошибка 403.

SuperSonic
() автор топика
Ответ на: комментарий от aeSh0aeF

А с чем отваливается? Таймаут? Хост анричбл?

telnet: connect to address xxxxx: Operation timed out telnet: Unable to connect to remote host

SuperSonic
() автор топика
Ответ на: комментарий от CHIPOK

hosts.allow:

# /etc/hosts.allow: list of hosts that are allowed to access the system.
#                   See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: LOCAL @some_netgroup
#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#


hosts.deny:

# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
#                  See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: some.host.name, .some.domain
#             ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#
# The PARANOID wildcard matches any host whose name does not match its
# address.
#
# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
# ALL: PARANOID


А вы не могли бы подсказать как можно потушить iptables?

SuperSonic
() автор топика

при попытке доступа к серверу по ip он не отвечает.

А по servername открывается? Просто обычно наоборот закрывают открытие по ip адресу. Но никто не мешают повесить тебе nginx прямо на ip адрес. Как ip:80
А так вот по моему твоя ситуация:

In this configuration nginx tests only the request’s header field “Host” to determine which server the request should be routed to. If its value does not match any server name, or the request does not contain this header field at all, then nginx will route the request to the default server for this port.

server_name localhost;

Ну и надеюсь ты так конечно подменил название , чтобы не показывать, а то должно и так все быть очевидно
Вообще никто не мешает тебе вешать вообще на все:

listen [::]:80;

anonymous_sama ★★★★★
()
Ответ на: комментарий от anonymous_sama

anonymous_sama, я пробовал listen [::]:80; и пробовал прописывать в server_name имя хоста, а на удалённой машине в файле hosts подменить этот хост на ip этого сервера (ну чтобы при переходе в браузере по этому хосту он ссылался на этот сервер), но не работает и всё тут.

SuperSonic
() автор топика
Ответ на: комментарий от Dron

Версия nginx?

Сейчас запущена версия 1.6.2 из официального стабильного репозитория nginx (http://nginx.org/ru/linux_packages.html#stable). В начале темы я писал, что пробовал и с версией 1.4.6 из репозитория Ubuntu. Ни та, ни другая версия не хотят отвечать на запрос браузера.

SuperSonic
() автор топика
Ответ на: комментарий от CHIPOK

sudo service iptables stop

iptables: unrecognized service

sudo systemctl stop iptables.service

Наверное не systemctl, а sysctl

sysctl: cannot stat /proc/sys/stop: No such file or directory
sysctl: cannot stat /proc/sys/iptables/service: No such file or directory

SuperSonic
() автор топика
Ответ на: комментарий от SuperSonic

Можешь написать на jabber указанный в профиле. Дать удаленный доступ через ssh или teamviewer и я посмотрю.
Хост, пингуется? К ssh подключаешься напрямую? DDoS защита есть, скажем хост у тебя еще род одной железкой, и каждый порт нужно пробрасывать отдельно.

anonymous_sama ★★★★★
()
Ответ на: комментарий от Dron

nginx -t

 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
SuperSonic
() автор топика
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

Вот дефолтный конфиг на котором все работает, только проверил

CHIPOK ★★★
()
Последнее исправление: CHIPOK (всего исправлений: 1)
Ответ на: комментарий от CHIPOK

Вот дефолтный конфиг на котором все работает, только проверил

Конфиг заменил, nginx перезагрузил, но изменений не наблюдается.

SuperSonic
() автор топика
Ответ на: комментарий от SuperSonic

Некто d2 осталял комментарий:

# iptables -I INPUT 4 -p tcp --dport 80 -j ACCEPT

Но потом коммент удалил, так вот, Аллилуйя! Заработало, ёпрст! Уважаемый d2, спасибо вам большое!

Интересно то, что мне до этого подсказывали похожее:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Но после её выполнения так ничего и не заработало, а после вашей наконец-то получилось.

Ещё не мог бы кто-нибудь подсказать как мне сделать, чтобы эффект оставался и после перезагрузки сервера?

SuperSonic
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.