编辑:
我对我的问题做了更多研究,我开始认为这是我的 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;
}
答案 0 :(得分:0)
我遇到的问题是 Nginx 仅将我的站点从我的路由器发布到本地 IP,而不是来自调制解调器的公共 IP。我访问了 Nginx 的每个可用站点 (\etc\nginx\sites-available\*
) 并将每个 listen XX;
语句(其中 XX
是端口号)更改为 listen 12.34.56.78:XX;
,其中 {{1 }} 是我来自调制解调器的公共 IP。这允许 Nginx 从公共 IP 提供服务。