nginx tidak melayani permintaan ke alamat IP eksternal


10

Saya memiliki nginx yang berjalan pada port 81. Saya dapat menggunakan telnet telnet 127.0.0.1 81dan semuanya baik-baik saja.

Tetapi ketika saya mencoba melakukan telnet ke mesin saya dari Mac saya (alamat IP eksternal), saya hanya mendapatkan kesalahan ini:

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

Inilah file / etc / nginx / sites-available / default saya:

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;
        }
        ...

Saya telah membuka Ubuntu Firewall (ufw) untuk mengizinkan port 81.

Saya benar-benar terjebak sekarang.

Adakah yang punya ide?

Jawaban:


17

Anda memiliki nama server sebagai

server_name 109.123.x.x;

Ini salah !!!!!

Masukkan nama apa pun bukan nomor

server_name mywebsite.home;

dan menempatkan mywebsite.home sebagai IP dari server nginx dalam file host Anda (/ etc / hosts) yaitu di mac Anda seperti dalam format

109.123.X.X mywebsite.home

di mana XX akan diganti dengan angka

atau

Jika Anda ingin melayani semua permintaan, cukup cantumkan

server_name _;

Jika itu tidak menyelesaikan masalah, periksa di bawah ini

Ini bisa berupa firewall Anda, yaitu iptables yang memblokir lalu lintas Anda atau Anda harus mendengarkan nginx hanya di localhost, misalnya 127.0.0.1

Nonaktifkan firewall

sudo ufw disable

Periksa alamat mendengarkan untuk port 81

sudo netstat -tulpn

Saya beralih ke port 8080 dan berfungsi sekarang. Mungkin ada hubungannya dengan port istimewa atau mungkin koneksi 3G saya memblokir port 81. Pokoknya, itu berfungsi sekarang. Terima kasih banyak atas bantuanmu.
Eamorr

Jika ini adalah contoh di cloud seperti rackspace atau AWS, periksa Grup Keamanan Anda. Secara default port 22 dan 80 adalah satu-satunya yang biasanya terbuka.
radtek

yang sudo ufw disablemelakukannya untuk saya.
GG_Python

Menurut nginx doc , menggunakan alamat ip memiliki nama_server tidak salah . "Jika seseorang membuat permintaan menggunakan alamat IP alih-alih nama server, bidang header permintaan" Host "akan berisi alamat IP dan permintaan tersebut dapat ditangani dengan menggunakan alamat IP sebagai nama server":
Gabriel Glenn

1

Saya memiliki masalah yang sama beberapa bulan yang lalu ketika saya mencoba menjalankan ngnix pada sistem ubuntu saya dan mengakses layanan dari sistem windows lain. tetapi tidak dapat menjalankan akses layanan port apa pun seperti http://127.0.0.1/8000 setelah beberapa kali saya mengatasinya dengan mematikan firewall sistem ubuntu saya.

perintah untuk mematikan firewall:

    sudo ufw disable

Anda juga dapat memeriksa status firewall Anda terlebih dahulu:

    sudo ufw status

0

Kiat yang membantu saya: A.) Port forward B.) Tetapkan IP publik sebagai server_name Langkah-langkah ini bekerja untuk saya terutama tip A.)


Nama server tidak boleh benar-benar menjadi IP.
Matt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.