Это, вероятно, одна из самых распространенных проблем в StackOverflow, но я попробовал все, что я знаю, чтобы попробовать.
Я только что купил свое первое доменное имя с намерением запустить веб-сайт на Linode. Мой публичный IP-адрес Linode 45.79.142.131
. Просто чтобы проверить, что все работает, я настроил простой веб-сервер Express, который обслуживает простой Hello, World. Код сервера:
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(80, () => console.log('Example app listening on port 80!'))
Чтобы разрешить Express связывать порт 80 (примечание: я не буду делать это для реального развертывания; это просто грязный тест), я использую следующую команду:
$ sudo node server-80.js
Example app listening on port 80!
Если я использую curl
локально на сервере, я получаю ответ:
$ curl 45.79.142.131:80
Hello World!
Однако, если я использую веб-браузер или свернусь извне, сервер не дает ответ.
$ curl 45.79.142.131:80
curl: (7) Failed to connect to 45.79.142.131 port 80: Operation timed out
Моим первым предположением было, что брандмауэр блокирует мой внешний запрос. Я использую ufw
для управления брандмауэром. Я использовал `` для разрешения запросов на порт 80. Я также разрешил ssh
, https
и фиктивный порт 3000. Я также перезагрузил брандмауэр, используя sudo ufw reload
.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
3000/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
3000/tcp (v6) ALLOW Anywhere (v6)
Запуск nmap
локально на сервере обеспечивает следующий вывод:
$ nmap localhost -Pn
Starting Nmap 7.60 ( https://nmap.org ) at 2018-08-27 22:12 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00027s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
Казалось бы, порт 80 открыт. Однако, если я запускаю nmap
извне (то есть на моем Mac), я не вижу порт 80 открытым.
$ nmap 45.79.142.131 -Pn
Starting Nmap 7.70 ( https://nmap.org ) at 2018-08-27 22:14 EDT
Nmap scan report for li1241-131.members.linode.com (45.79.142.131)
Host is up (0.096s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 47.51 seconds
Я в растерянности. Я действительно не знаю, что здесь происходит. Что еще более странно, так это то, что если я запускаю свой веб-сервер Express на порту 3000 (и sudo ufw allow 3000/tcp
), все работает безупречно. Я могу получить ответ от веб-сервера. В порте 80 есть что-то конкретное, что идет не так. Похоже, что брандмауэр блокирует мои запросы, но я специально добавил исключение для порта 80.
Если есть какие-либо журналы или дополнительная информация, которая поможет в диагностике проблемы, я с радостью поделюсь этим.