NGINX/Apache 不响应 NAT 后面的请求

NGINX/Apache 不响应 NAT 后面的请求

警告:我是 NGINX 的新手。我使用过 apache2,但在 CentOS 上,我不习惯它的设置方式,而且我想尝试 NGINX,因为它更新、更现代。

编辑:我也用 Apache(httpd) 测试过,但没成功。似乎响应没有正确转发回请求的 IP/客户端。但是当我转发 ssh 时,它工作得很好。使用端口 80,没成功。我只能在本地机器上访问网站。即使是同一网络上的机器也无法访问该网站。

我有一个简单的 VM 解决方案,运行在 VMWare 上。所有 VM 都运行 CentOS 7,并且禁用了 selinux。

VM #1 是网关。它有两个 NIC,eth0 - 内部网络,eth1 - wan。此 VM 还设置了 iptables。我有基本规则,基本上允许所有流量,但阻止一些不需要的流量。此外,还有 NAT 规则用于将所需的 HTTP 和 HTTPs 端口请求转发到内部 VM,如下所示:

*nat
:INPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# HTTP
-A PREROUTING -p tcp -m tcp -i eth1 --dport 80 -j DNAT --to-destination 10.10.10.2:80
# HTTPS
-A PREROUTING -p tcp -m tcp -i eth1 --dport 443 -j DNAT --to-destination 10.10.10.2:443
# MySQL
-A PREROUTING -p tcp -m tcp -i eth1 --dport 3306 -j DNAT --to-destination 10.10.10.2:3306
# IMAPs
-A PREROUTING -p tcp -m tcp -i eth1 --dport 993 -j DNAT --to-destination 10.10.10.2:993
# SMTP
-A PREROUTING -p tcp -m tcp -i eth1 --dport 25 -j DNAT --to-destination 10.10.10.2:25
# SMTPs
-A PREROUTING -p tcp -m tcp -i eth1 --dport 465 -j DNAT --to-destination 10.10.10.2:465
-A PREROUTING -p tcp -m tcp -i eth1 --dport 587 -j DNAT --to-destination 10.10.10.2:587
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT

VM #2 是 Web 服务器。它运行的是 NGINX。它具有默认配置:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    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;

    include /etc/nginx/conf.d/*.conf;

    include /etc/nginx/sites-enabled/*.conf;
    server_names_hash_bucket_size 64;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

}

现在,当我从网关执行 curl 10.10.10.2 时,我得到:

curl: (7) Failed connect to 10.10.10.2:80; No route to host

但 ping 效果很好。

另外,当尝试外部 WAN IP 时,它显示连接被拒绝。

我现在非常困惑,不知道下一步该尝试和测试什么。当我为 ssh 添加 NAT 时,我可以毫无问题地访问它。但这些 HTTP/s 请求不起作用。这是 NGINX 的问题吗?我还需要对防火墙做其他什么操作才能使 NGINX 服务器能够响应 VM 外部的请求吗?

谢谢你!

答案1

好的。所以,我以为 Web 服务器 VM 上的防火墙已被禁用,但事实证明,尽管我停止了该服务,但实际上并没有禁用。我再次停止了它,现在它可以正常工作了。

相关内容