【问题标题】:Nginx server blocks are not workingNginx 服务器块不工作
【发布时间】:2017-04-05 07:21:01
【问题描述】:

我在数字海洋水滴(虚拟专用服务器)上使用this tutorial成功创建了2个服务器块。

我尝试使用相同的方法再创建两个,但是当我访问 server_name 中列出的域(即 example.com)时,我只是得到一个白屏。

我已经重启了 nginx,并重启了我的服务器。

我应该如何测试我的配置是否正常工作?

这是来自 /etc/nginx/sites-available 的“example.com”配置。它是符号链接到 /etc/nginx/sites-enabled

server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;

    server_name example.com www.example.com;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
}

这是我的 /var/www/example.com/html/index.html

<html>
    <head>
        <title>Welcome to example.com</title>
    </head>
    <body style="background:#444444;">
        <h1>Success. The example.com server block is working!</h1>
    </body>
</html>

使用 DNS 查找工具,它显示访问我的域会返回我服务器的 IP 地址。但是当我wget example.com时,下载的index.html文件来自域名注册商,而不是我的/var/www/example.com/html/index.html这只是DNS传播速度慢吗?

【问题讨论】:

  • 您能否对“DNS 说 IP 地址正在访问我的服务器...”这句话做一些澄清,您的期望是什么?你在观察什么?
  • 更新:使用DNS查找工具,显示访问我的域返回我服务器的IP地址。
  • 如果有人访问您的服务器,他们已经拥有您的 IP 地址。这就是 DNS 的工作原理。我错过了什么吗?
  • 我有 4 个域指向我的服务器并配置了 nginx 服务器块(虚拟主机)。我的两个域,完美运行。最新的 2 只显示一个白页,而不是我想显示的 index.html 文件。谢谢

标签: nginx virtualhost digital-ocean ubuntu-16.04


【解决方案1】:

我想我现在明白了。 DNS 测试站点与您使用的 DNS 服务器上的 DNS 传播可能不同。但是,还有其他测试方法。

创建 Hosts 文件条目:

文件位置如下:

linux: /etc/hosts
windows: c:\windows\system32\drivers\etc

您打开文件并为您的新主机名和 IP 添加一个条目。使用1.2.3.4 作为目标IP 和example.com 作为主机名的示例:

#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1   localhost.localdomain   localhost
::1         localhost.localdomain   localhost
1.2.3.4     example.com

现在,当您执行 wgetcurl 时,它将指向位于 1.2.3.4 的服务器,而不是执行 DNS 查找。

使用 telnet 手动指定 HOST: 标头:

您也可以使用 telnet 手动执行 GET 请求,并指定您正在测试的不同主机名。以下是连接到 google 服务器并指定不同主机名的示例:

[ttucker@localhost tmp]$ telnet 216.58.217.206 80
Trying 216.58.217.206...
Connected to 216.58.217.206. 
Escape character is '^]'.
GET / HTTP/1.1
HOST: example.com

HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8
Content-Length: 1561
Date: Mon, 21 Nov 2016 19:57:18 GMT
....

注意:您需要在“HOST”标头之后点击两次&lt;enter&gt;,它正在寻找\r\n\r\n

【讨论】:

  • 我认为主机文件是为了让我可以在不实际拥有域的情况下测试网络服务器配置?我发现了一些奇怪的东西。当我尝试在手机上查看网站时,它可以工作!在我的桌面上,我清除了浏览器缓存,但它仍然无法正常工作。然后我启用了一个 VPN,我的网站在我的桌面上运行了!我很混乱。我的调制解调器是否有缓存或我的 ISP?
  • 感谢@varlogtim 的周到分析。我发现了更多关于我的问题,并提出了一个新问题:stackoverflow.com/questions/40729135/…
【解决方案2】:

它不起作用,因为我路由器上设置的 DNS 域名服务器没有更新,但我手机的域名服务器使用的是 IPv6,并且更新了,我的 VPN 也更新了,导致我很困惑。

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2019-03-22
    相关资源
    最近更新 更多