nginx не обслуживает запросы на внешний IP-адрес

10

У меня nginx работает на порту 81. Я могу использовать telnet, telnet 127.0.0.1 81и все в порядке.

Но когда я пытаюсь подключиться к моей машине через telnet с моего Mac (внешний IP-адрес), я просто получаю эту ошибку:

telnet: connect to address 109.123.x.x: Connection refused
telnet: Unable to connect to remote host

Вот мой файл / etc / nginx / sites-available / default:

server {
        listen   81; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6

        root /usr/share/nginx/www;
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name 109.123.x.x;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
        }
        ...

Я открыл Ubuntu Firewall (UFW), чтобы разрешить порт 81.

Я полностью застрял сейчас.

У кого-нибудь есть идеи?

Eamorr
источник

Ответы:

17

У вас есть имя сервера как

server_name 109.123.x.x;

Это не верно !!!!!

Введите любое имя, а не число, как

server_name mywebsite.home;

и поместите mywebsite.home в качестве IP-адреса сервера nginx в ваш файл хоста (/ etc / hosts), т. е. на ваш Mac, как в формате

109.123.X.X mywebsite.home

где XX заменяется числами

или

Если вы хотите, чтобы удовлетворить все запросы, просто введите

server_name _;

Если это не решает проблемы, проверьте ниже

Это либо ваш брандмауэр, т.е. iptables, блокирующий ваш трафик, либо ваш nginx слушает только на локальном хосте, т.е. 127.0.0.1.

Отключить брандмауэр

sudo ufw disable

Проверьте адрес прослушивания для порта 81

sudo netstat -tulpn
кажи
источник
Я переключился на порт 8080, и теперь он работает. Может быть, что-то делать с привилегированным портом или, может быть, мой порт подключения 3G 3G порт 81. В любом случае, он работает сейчас. Большое спасибо за вашу помощь.
Eamorr
Если это экземпляр в облаке, такой как rackspace или AWS, проверьте группы безопасности. По умолчанию порты 22 и 80 являются единственными, которые обычно открыты.
Радтек
sudo ufw disableсделал это для меня.
GG_Python
Согласно документации nginx , использование IP-адреса имеет имя_сервера не является неправильным . «Если кто-то делает запрос, используя IP-адрес вместо имени сервера, поле заголовка запроса« Host »будет содержать IP-адрес, и запрос может быть обработан с использованием IP-адреса в качестве имени сервера»:
Габриэль Гленн,
1

У меня та же проблема несколько месяцев назад, когда я пытаюсь запустить ngnix в моей системе Ubuntu и получить доступ к сервисам из другой системы Windows. но не могу запустить доступ к какой-либо службе порта, такой как http://127.0.0.1/8000, через некоторое время я преодолеваю это путем отключения брандмауэра моей системы Ubuntu.

Команда для отключения брандмауэра:

    sudo ufw disable

Вы также можете сначала проверить состояние вашего брандмауэра:

    sudo ufw status
Абхишек-Saini
источник
0

Советы, которые мне помогли: A.) Переадресация порта B.) Установка общедоступного IP-адреса как имя_сервера.

A09hopper
источник
Имя сервера никогда не должно быть IP.
Мэтт