外部无法访问IP地址

问题描述

编辑

我对我的问题做了更多研究,我开始认为这是我的 isp 的问题。我尝试使用 vpn 在我的服务器上运行 Nmap 扫描,并且 Nmap 认为主机已关闭或阻止了 ping 探测。当我从我的网络运行 Nmap 扫描时,我得到了正在运行的端口的预期输出。 isp 是否会阻止对 ip 的访问?如果 isp 阻止访问,我应该打电话给 isp 以解决问题吗?

下面是最初的问题,是关于 Nginx 的,我认为这不再是问题了。我仍然会包含此信息,以防它有助于以任何身份解决实际问题


我目前有一台运行 Nginx 的服务器来托管站点。该服务器有一个直接连接到调制解调器的以太网连接,另外三个连接到不同网络上的路由器。服务器和 Nginx 已经正常工作了几个月,但最近服务器和 Nginx 出现了问题。我不确定问题是什么,但我知道 Nginx 不再向 IP 与我的调制解调器不同的任何人提供站点服务。我可以从我的服务器 IP 访问该站点,或者通过网络上的计算机以及服务器所连接的路由器访问该站点。但是,我无法使用手机或其他人的网络在手机上访问该网站。

每当我尝试从不同的 IP 访问站点时,错误消息是无法打开页面,因为服务器停止响应

我不知道问题是否与 Nginx 相关,或者我的调制解调器或 ISP 是否有问题。我试过弄乱 Nginx 配置文件,但似乎没有任何效果Nginx 正在运行该站点,因为我可以从我的个人网络访问站点。我的服务器上确实有防火墙,但我允许所有流量通过正确的端口,当我禁用防火墙时问题仍然存在。

Nginx 服务的大多数其他问题,或缺乏服务,谈论更改配置文件中的 server_name 属性。我已将此值更改为 _、服务器的 IP 地址和附加到服务器的域名,但这些都不起作用。

这是我的网站之一的 Nginx 文件。我在站点中运行 PHP,Certbot 处理 https。

server {
    root /home/user/www/site;
    
    index index.PHP index.html index.htm index.Nginx-debian.html;

    server_name mydomain.com;

    location / {
        try_files $uri $uri/ =404;
    }
    
    location ~ \.PHP$ {
        include snippets/fastcgi-PHP.conf;
    
        fastcgi_pass unix:/run/PHP/PHP7.4-fpm.sock;
    }

    listen 443 ssl; 
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; 
    include /etc/letsencrypt/options-ssl-Nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
}

server {
    if ($host = mydomain.com) {
        return 301 https://$host$request_uri;
    } 

    server_name mydomain.com;
    listen 80;
    return 404; 
}

这是我的 Nginx 配置文件(我不记得曾经更改过文件,但可能发生了一些事情):

user www-data;
worker_processes auto;
pid /run/Nginx.pid;
include /etc/Nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    
    include /etc/Nginx/mime.types;
    default_type application/octet-stream;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 

    ssl_prefer_server_ciphers on;

    access_log /var/log/Nginx/access.log;
    error_log /var/log/Nginx/error.log;

    gzip on;

    include /etc/Nginx/conf.d/*.conf;
    include /etc/Nginx/sites-enabled/*;

    error_page 404 /404.html;
}

解决方法

我遇到的问题是 Nginx 仅将我的站点从我的路由器发布到本地 IP,而不是来自调制解调器的公共 IP。我访问了 Nginx 的每个可用站点 (\etc\nginx\sites-available\*) 并将每个 listen XX; 语句(其中 XX 是端口号)更改为 listen 12.34.56.78:XX;,其中 {{1 }} 是我来自调制解调器的公共 IP。这允许 Nginx 从公共 IP 提供服务。