外部无法访问IP地址
IP Address can't be Accessed Externally
编辑:
我对我的问题做了更多研究,我开始认为这是我的 isp 的问题。我尝试使用 vpn 运行 在我的服务器上进行 Nmap 扫描,Nmap 认为主机已关闭或阻止了 ping 探测。当我从我的网络 运行 进行 Nmap 扫描时,我得到了 运行ning 端口的预期输出。 isp 会阻止访问 ip 吗?如果 isp 阻止访问,我应该打电话给 isp 来解决问题吗?
下面是原来的问题,是关于 Nginx 的,我认为这不再是问题了。我仍将包含此信息,以防它有助于以任何身份解决实际问题
我目前有一个服务器,我 运行 Nginx 用于托管站点。该服务器有一个以太网直接连接到调制解调器,另外三个连接到不同网络上的路由器。服务器和Nginx已经正常运行了几个月,但是最近服务器和Nginx出了点问题。我不确定问题出在哪里,但我知道 Nginx 不再为 IP 与我的调制解调器不同的任何人提供网站服务。我可以从我的服务器 IP 访问该站点,或者通过网络上的计算机与服务器连接的路由器访问该站点。但是,我无法使用手机或其他人的网络在我的 phone 上访问该网站。
每当我尝试从不同的 IP 访问站点时,错误消息是无法打开页面,因为服务器停止响应。
我不知道这个问题是否与 Nginx 特别相关,或者我的调制解调器或 ISP 是否有问题。我试过弄乱 Nginx 配置文件,但似乎没有任何效果。 Nginx 正在 运行 连接该站点,因为我可以从我的个人网络访问该站点。我的服务器上确实有防火墙,但我允许所有流量通过正确的端口,但当我禁用防火墙时问题仍然存在。
Nginx 服务的大多数其他问题,或缺乏服务,都与更改配置文件中的 server_name
属性 有关。我已将此值更改为 _
、服务器的 IP 地址和附加到服务器的域名,但其中 none 有效。
这是我的一个站点的 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,而不是调制解调器的 public IP。我进入了 Nginx 的每个可用站点 (\etc\nginx\sites-available\*
) 并更改了每个 listen XX;
语句,其中 XX
是端口号,更改为 listen 12.34.56.78:XX;
,其中 [=14] =] 是我来自调制解调器的 public IP。这允许 Nginx 从 public IP 提供服务。
编辑:
我对我的问题做了更多研究,我开始认为这是我的 isp 的问题。我尝试使用 vpn 运行 在我的服务器上进行 Nmap 扫描,Nmap 认为主机已关闭或阻止了 ping 探测。当我从我的网络 运行 进行 Nmap 扫描时,我得到了 运行ning 端口的预期输出。 isp 会阻止访问 ip 吗?如果 isp 阻止访问,我应该打电话给 isp 来解决问题吗?
下面是原来的问题,是关于 Nginx 的,我认为这不再是问题了。我仍将包含此信息,以防它有助于以任何身份解决实际问题
我目前有一个服务器,我 运行 Nginx 用于托管站点。该服务器有一个以太网直接连接到调制解调器,另外三个连接到不同网络上的路由器。服务器和Nginx已经正常运行了几个月,但是最近服务器和Nginx出了点问题。我不确定问题出在哪里,但我知道 Nginx 不再为 IP 与我的调制解调器不同的任何人提供网站服务。我可以从我的服务器 IP 访问该站点,或者通过网络上的计算机与服务器连接的路由器访问该站点。但是,我无法使用手机或其他人的网络在我的 phone 上访问该网站。
每当我尝试从不同的 IP 访问站点时,错误消息是无法打开页面,因为服务器停止响应。
我不知道这个问题是否与 Nginx 特别相关,或者我的调制解调器或 ISP 是否有问题。我试过弄乱 Nginx 配置文件,但似乎没有任何效果。 Nginx 正在 运行 连接该站点,因为我可以从我的个人网络访问该站点。我的服务器上确实有防火墙,但我允许所有流量通过正确的端口,但当我禁用防火墙时问题仍然存在。
Nginx 服务的大多数其他问题,或缺乏服务,都与更改配置文件中的 server_name
属性 有关。我已将此值更改为 _
、服务器的 IP 地址和附加到服务器的域名,但其中 none 有效。
这是我的一个站点的 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,而不是调制解调器的 public IP。我进入了 Nginx 的每个可用站点 (\etc\nginx\sites-available\*
) 并更改了每个 listen XX;
语句,其中 XX
是端口号,更改为 listen 12.34.56.78:XX;
,其中 [=14] =] 是我来自调制解调器的 public IP。这允许 Nginx 从 public IP 提供服务。