Простой конфиг Nginx не работает

957

Я разработчик, у которого совершенно нет опыта работы с серверами, этот проект, над которым я работаю, является моим первым опытом в мире серверов. По сути, я должен размещать API онлайн на сервере Linode, на котором работает Nginx в Ubuntu. И у меня возникли проблемы с настройкой простого серверного блока для размещения страницы индекса html, только с тегом h1, говорящим «привет». Я следовал и читал различные учебные пособия о том, как заставить работать простой блок сервера, у меня даже эти блоки работали на моей локальной машине, но у меня возникают проблемы с его работой на удаленном сервере.

Я покажу вам несколько блоков, которые не работают для меня на Линоде:

Во-первых, простой блок для сервера статической HTML-страницы, это работает на моем локальном компьютере:

server {  listen 8005; index index.html; root /srv/www/site;  } 

еще один простой блок:

server {  listen [server ip]:8006; server_name ""; index index.html; root /srv/www/site;  location ~/ {  root /srv/www/site;  }  } 

Блок для обслуживания php (работает локально):

server {  listen [server ip]:8007; server_name ""; index index.php index.html index.htm; root /srv/www/site;  location / {  try_files $uri $uri/ /index.php?q=$uri&$args;  }  location ~* \.php$ {  try_files $uri /index.php; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name;  }  } 

Всякий раз, когда я пытался получить к ним доступ через браузер, я получал тайм-ауты соединения с сервером. У меня нет настройки DNS, поэтому я пытался получить к ней доступ, используя IP-адрес сервера и номер порта:

[server ip]:[port] 

или же

[server ip]:[port]/index.html 

но ничего не получил.

Таким образом, одна вещь, которая может вызвать проблему, заключается в том, что другое приложение уже размещено на сервере. Он имеет свой собственный блок и работает на своем собственном порту. У него есть собственное DNS-имя, указывающее на него. Но ничего из этого не должно иметь значения, верно? Поскольку каждый серверный блок является в основном виртуальным сервером или создает виртуальный домен. Доступ к нему через ip и порт должен работать нормально, но это не работает!

Вот и все, что я могу придумать, мои знания в этой области исчерпаны, и мне нужна помощь умных людей!

4
Что выводит `iptables -nvL`? Xavier Lucas 8 лет назад 2
Правила брандмауэра скорее всего. 8 лет назад 0
пока я нашел кое-что, пропустил порты через брандмауэр и проверил, что Nginx прослушивает эти порты. все еще ничего, хотя. Кроме того, действующее приложение, которое уже запущено на сервере, прослушивает порт 80, при изменении моего простого блока сервера на прослушивание порта 80 оно работает. так что по крайней мере мой синтаксис блока правильный. Что я получаю, когда запускаю 'lsof -i: 80', которую я получаю: http://i.imgur.com/f6WbR7y.png, означает ли *: http, что весь трафик http направляется на порт 80? 8 лет назад 0
@jonathan * Вы должны * отредактировать свой вопрос * с новой информацией. Что касается результатов `lsof`, это означает, что программное обеспечение, прослушивающее порт 80, прослушивает любой интерфейс, доступный на машине. Если вы нашли что-то вроде `127.0.0.1: 80`, это означало бы, что программное обеспечение будет принимать только те соединения, которые сделаны на устройстве обратной связи через порт 80. Таким образом, соединение, исходящее с карты Ethernet, будет отклонено. Louis 8 лет назад 0

1 ответ на вопрос

0
snoopy

попробуйте получить доступ с того же сервера, используя 127.0.0.1:8005 - если он работает, то это ваши IP-таблицы. В этом случае попробуйте запустить что-то вроде: iptables -A INPUT -i eth0 -p tcp --dport 8005 -j ACCEPTоткрыть порт.