简单的 Nginx 配置不起作用

简单的 Nginx 配置不起作用

我是一名完全没有服务器经验的开发人员,我正在从事的这个项目是我第一次涉足服务器领域。基本上,我必须在运行 Ubuntu 上的 Nginx 的 Linode 服务器上在线托管 API。而且,我无法设置一个简单的服务器块来托管 html 索引页,其中只有一个 h1 标签写着“hello”。我已经关注并阅读了有关如何使简单服务器块正常工作的各种教程,我甚至在本地机器上运行了这些块,但在使其在远程服务器上工作时遇到了问题。

我将向您展示一些在 Linode 上无法正常工作的块:

首先,一个简单的块来服务一个静态 html 页面,这在我的本地机器上运行:

server {

    listen 8005;
    index index.html;
    root /srv/www/site;

}

另一个简单的块:

server {

    listen [server ip]:8006;
    server_name "";
    index index.html;
    root /srv/www/site;

    location ~/ {

        root /srv/www/site;

    }

}

用于提供 php 服务的块(本地工作):

server {

    listen [server ip]:8007;
    server_name "";
    index index.php index.html index.htm;
    root /srv/www/site;

    location / {

        try_files $uri $uri/ /index.php?q=$uri&$args;

    }

    location ~* \.php$ {

        try_files $uri /index.php;
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;

    }

}

每当我尝试通过浏览器访问它们时,服务器连接都会超时。我没有设置任何 DNS,因此我尝试使用服务器 IP 和端口号进行访问:

[server ip]:[port]

或者

[server ip]:[port]/index.html

但什么也没得到。

因此,可能导致问题的一件事是服务器上已经托管了另一个应用程序。它有自己的块并在自己的端口上运行。它有自己的 DNS 名称指向它。但这些都不重要,对吧?因为每个服务器块基本上都是一个虚拟服务器或创建一个虚拟域。通过 ip 和端口访问它应该可以正常工作,但它不起作用!

这就是我能想到的全部了,我在这个领域的知识已经达到了极限,我需要聪明人的帮助!

答案1

尝试使用 127.0.0.1:8005 从同一台服务器访问 - 如果成功,则说明是您的 IP 表。在这种情况下,尝试运行类似以下内容的命令:iptables -A INPUT -i eth0 -p tcp --dport 8005 -j ACCEPT打开端口。

相关内容