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

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

我的 nginx 在端口 81 上运行。我可以使用 telnettelnet 127.0.0.1 81并且一切正常。

但是,当我尝试从我的 Mac(外部 IP 地址) telnet 到我的机器时,我只收到此错误:

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。

我现在完全陷入困境了。

有人有主意吗?

答案1

您的服务器名称为

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

答案2

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

关闭防火墙的命令:

sudo ufw disable

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

sudo ufw status

答案3

对我有帮助的提示:A.)端口转发B.)将公共IP设置为server_name这些步骤对我很有用,尤其是提示A。)

相关内容