Nginx不向外部IP地址提供请求


10

我在端口81上运行了nginx。我可以使用telnet进行连接telnet 127.0.0.1 81,一切都很好。

但是,当我尝试从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防火墙(ufw)允许端口81。

我现在完全陷入困境。

谁有想法?

Answers:


17

您的服务器名称为

server_name 109.123.x.x;

这是错误的!

输入任何名称而不是数字

server_name mywebsite.home;

并将mywebsite.home作为Nginx服务器的IP放在您的主机文件(/ 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连接阻止了端口81。无论如何,它现在正在工作。非常感谢您的帮助。
Eamorr

如果它是机架或AWS等云中的实例,请检查您的安全组。默认情况下,端口22和80是通常打开的唯一端口。
radtek

sudo ufw disable为我做。
GG_Python '16

根据Nginx文档使用ip地址具有server_name并没有错“如果有人使用IP地址而不是服务器名称进行请求,则“主机”请求标头字段将包含IP地址,并且可以使用IP地址作为服务器名称来处理该请求”:
Gabriel Glenn

1

几个月前,当我尝试在ubuntu系统上运行ngnix并从另一个Windows系统访问服务时,我遇到了同样的问题。但 一段时间后我无法关闭ubuntu系统的防火墙,从而无法运行访问任何端口服务(例如http://127.0.0.1/8000)

关闭防火墙的命令:

    sudo ufw disable

您还可以先检查防火墙的状态:

    sudo ufw status

0

帮助我的技巧:A.)端口转发B.)将公共IP设置为server_name这些步骤对我特别有用,特别是技巧A。)


服务器名称绝对不应该是IP。
马特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.