nginx không phục vụ yêu cầu đến địa chỉ IP bên ngoài


10

Tôi có nginx chạy trên cổng 81. Tôi có thể telnet sử dụng telnet 127.0.0.1 81và mọi thứ đều ổn.

Nhưng khi tôi cố gắng telnet đến máy của mình từ máy Mac (địa chỉ IP bên ngoài), tôi chỉ gặp lỗi này:

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

Đây là tập tin / etc / nginx / sites-Available / default của tôi:

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

Tôi đã mở Ubuntu Firewall (ufw) để cho phép cổng 81.

Bây giờ tôi hoàn toàn bị mắc kẹt.

Còn ai có ý tưởng nào không?

Câu trả lời:


17

Bạn có tên máy chủ là

server_name 109.123.x.x;

Cái này sai !!!!!

Đặt bất kỳ tên nào không phải số như

server_name mywebsite.home;

và đặt mywebsite.home làm IP của máy chủ nginx trong tệp máy chủ của bạn (/ etc / hosts) tức là trong mac của bạn như ở định dạng

109.123.X.X mywebsite.home

XX được thay thế bằng số

hoặc là

Nếu bạn muốn phục vụ tất cả các yêu cầu, chỉ cần đặt

server_name _;

Nếu điều đó không giải quyết được mọi thứ, hãy kiểm tra bên dưới

Đó là tường lửa của bạn, tức là iptables chặn lưu lượng của bạn hoặc bạn chỉ nghe nginx tại localhost, tức là 127.0.0.1

Vô hiệu hóa tường lửa

sudo ufw disable

Kiểm tra địa chỉ nghe cho cổng 81

sudo netstat -tulpn

Tôi đã chuyển sang cổng 8080 và nó đang hoạt động. Có thể là một cái gì đó để làm với một cổng riêng tư hoặc có thể kết nối 3G của tôi chặn cổng 81. Dù sao, nó đang hoạt động. Rất cảm ơn vì sự giúp đỡ của bạn.
Eamorr

Nếu đó là một phiên bản trong đám mây như rackspace hoặc AWS, hãy kiểm tra Nhóm bảo mật của bạn. Theo mặc định, cổng 22 và 80 là cổng duy nhất thường mở.
radtek

những sudo ufw disableđã làm nó cho tôi.
GG_Python

Theo tài liệu nginx , sử dụng địa chỉ ip có server_name không sai . "Nếu ai đó thực hiện yêu cầu bằng địa chỉ IP thay vì tên máy chủ, trường tiêu đề yêu cầu của máy chủ lưu trữ trên máy chủ lưu trữ sẽ chứa địa chỉ IP và yêu cầu có thể được xử lý bằng địa chỉ IP làm tên máy chủ":
Gabriel Glenn

1

Tôi có một vấn đề tương tự một vài tháng trước khi tôi đang cố gắng chạy ngnix trên hệ thống Ubuntu của tôi và truy cập các dịch vụ từ một hệ thống cửa sổ khác. nhưng không thể chạy truy cập bất kỳ dịch vụ cổng nào như http://127.0.0.1/8000 sau khi tôi khắc phục điều này bằng cách tắt tường lửa của hệ thống ubfox của tôi.

lệnh tắt tường lửa:

    sudo ufw disable

bạn cũng có thể kiểm tra trạng thái tường lửa của mình trước:

    sudo ufw status

0

Các mẹo giúp tôi: A.) Chuyển tiếp cổng B.) Đặt IP công cộng làm server_name Các bước này hoạt động với tôi đặc biệt là mẹo A.)


Tên máy chủ không bao giờ thực sự là một IP.
Matt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.