![nginx 不向外部 IP 地址提供请求](https://linux22.com/image/576004/nginx%20%E4%B8%8D%E5%90%91%E5%A4%96%E9%83%A8%20IP%20%E5%9C%B0%E5%9D%80%E6%8F%90%E4%BE%9B%E8%AF%B7%E6%B1%82.png)
我的 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。)