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.

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

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

Ответы:


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

0

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


Имя сервера никогда не должно быть IP.
Мэтт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.