无法从远程浏览器连接到 Nginx(奇怪的问题)

无法从远程浏览器连接到 Nginx(奇怪的问题)

我在使用 Nginx 时遇到了一个非常奇怪的问题,我无法从浏览器访问它。

我已经在我的计算机上安装了 CentOS 7 虚拟机,其中安装并配置了 Nginx、PHP-FPM 和 MariaDB。

Nginx 的配置如下:

server {
listen       80;
server_name  localhost;

#charset koi8-r;
#access_log  /var/log/nginx/log/host.access.log  main;

location / {
    root   /path/to/www
    index  index.php;
    try_files $uri $uri/ /index.php?$args;
}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    try_files $uri $uri/ = 404;
    root   /path/to/www/;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}
}

我还使用以下规则配置了 Iptables:

INPUT_ZONES  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:mysql

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
OUTPUT_direct  all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:mysql

而且我还决定暂时禁用 SELinux...

最后,当执行“tcpdump port 80”时,我在尝试访问 Web 服务器时收到此消息:

listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
19:39:51.574889 IP 192.168.56.1.59338 > 192.168.56.101.http: Flags [S], seq 2033938019, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 551897257 ecr 0,sackOK,eol], length 0

我的电脑网络浏览器显示无法连接到指定的服务器...

您知道是什么原因导致此问题吗?我遗漏了什么吗?

抱歉发了这么长的短信,但我真的不知道现在该怎么办。

谢谢

答案1

您的防火墙规则拒绝所有传入流量。

您尝试通过手动附加规则来允许 HTTP、HTTPS 和 MySQL 连接来解决此问题,但这不起作用,因为它们已被先前的规则拒绝。

此外,您的系统正在运行firewalld。

为了解决这个问题,您应该使用firewalld来管理您的防火墙规则。

例如:

firewall-cmd --add-service=http
firewall-cmd --add-service=https
firewall-cmd --add-service=mysql

为了使它们持久存在,请运行:

firewall-cmd --runtime-to-permanent

(最后要求您至少更新到 CentOS 7.1。)

答案2

我运行的是 centos7,在安装 nginx 后也遇到了同样的问题。虽然 nginx 正在运行,但是无法从浏览器访问,我通过这个解决了这个问题邮政

运行以下命令以允许 HTTP 和 HTTPS 流量

sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

相关内容