【已解决-好神奇】Nodejs环境下为什么我自己访问不了自己的网站了

【已解决-好神奇】Nodejs环境下为什么我自己访问不了自己的网站了

香港服务器,别人可以访问我的网站,我自己访问不了。这是怎么回事呢?

解决咯。把自己的DNS修改成原来的。8.8.8.8

10 回复

【已解决-好神奇】Nodejs环境下为什么我自己访问不了自己的网站了

问题描述:

我在香港的服务器上运行了一个基于 Node.js 的网站。奇怪的是,其他人可以正常访问我的网站,但当我尝试用自己的电脑访问时却无法访问到。

解决过程:

  1. 检查本地 DNS 设置: 最初我以为是服务器配置的问题,但经过排查发现并不是服务器端的问题。于是开始怀疑是否是本地 DNS 设置导致的访问问题。

  2. 尝试使用公共 DNS 服务器: 我将本地计算机的 DNS 设置修改为 Google 提供的公共 DNS(8.8.8.8),重新尝试访问我的网站。果然,这次我能够成功访问自己的网站了。

原因分析:

通常情况下,DNS(域名系统)用于将域名解析为 IP 地址。如果本地的 DNS 设置有问题或者缓存了一些错误信息,可能会导致某些域名解析出错,从而无法访问相应的网站。例如,如果你的本地 DNS 缓存了错误的 IP 地址,你可能会被导向错误的位置或根本无法解析该域名。

示例代码:

虽然这个问题主要与 DNS 设置有关,而不是 Node.js 本身的代码,但以下是一个简单的 Node.js 应用程序示例,用于创建一个基本的 HTTP 服务器:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

这个示例创建了一个简单的 HTTP 服务器,监听本地的 3000 端口,并返回 “Hello World” 字符串。确保你的 Node.js 应用程序正在运行,并且正确地监听指定的端口。

总结:

如果你遇到类似的问题,首先检查你的本地 DNS 设置,尤其是当你从不同的网络环境访问服务时。尝试更换 DNS 服务器(如使用 Google 的 8.8.8.8)来解决可能的 DNS 解析问题。


干坏事被樯发现了?

呵呵。

ip的问题 ?

先Dig一下你电脑的域名解析是不是你的服务器地址,然后traceroute一下

能否具体一点呢?

不确定好奇怪

我用8.8.8.8也不行

表示无压力,lz在边缘地带。哈哈

从描述来看,问题似乎与DNS配置有关。如果你能从外部访问网站,但自己无法通过本地网络访问,这通常是因为DNS解析问题或防火墙设置。

假设你使用的是一个简单的Node.js HTTP服务器,并且你已经部署了这个服务。以下是一些可能的原因和解决方案:

可能原因

  1. DNS解析问题:你的本地DNS可能解析到一个错误的IP地址。
  2. 防火墙设置:你的服务器可能配置为只允许外部访问。
  3. 本地网络配置:可能存在某些本地网络设置阻止了对服务器的访问。

解决方案

1. 检查DNS配置

确保你的DNS设置正确。你可以临时使用公共DNS(如8.8.8.8)来验证是否是DNS解析问题。

# 修改 /etc/resolv.conf 文件
sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf

2. 防火墙设置

确保服务器的防火墙没有阻止本地网络的访问。你可以临时禁用防火墙来测试。

# 禁用防火墙(以Ubuntu为例)
sudo ufw disable

3. 检查Node.js服务器配置

确保你的Node.js服务器监听了所有网络接口。

const http = require('http');

const hostname = '0.0.0.0'; // 监听所有网络接口
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

总结

如果上述方法都解决了问题,那么问题可能是DNS解析或防火墙设置。如果问题依旧存在,建议检查服务器的日志文件和网络配置。

回到顶部