外部无法访问IP地址

时间:2021-03-16 20:06:23

标签: nginx server ip modem

编辑

我对我的问题做了更多研究,我开始认为这是我的 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;
}

1 个答案:

答案 0 :(得分:0)

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