Nginx 服务器配置

Nginx 服务器配置

我是被 stack overflow 引导到这里的 - 如果这是错误的论坛,请见谅。我正在尝试设置一个模拟多个服务器的本地开发环境。我只是想了解更多相关信息,这是我第一次这样做。简而言之,我无法在我的 nginx 实例上访问子域。

所以基本上我有 3 个 Ubuntu VM 在运行。一个有 Nginx,一个有两个节点实例(web 和 api),一个是 mongodb。如果我进入 nginx 服务器,curl localhost我会得到 web 响应(这很好)。如果我curl api.localhost得到 api 响应(这也很好)。我认为这意味着 nginx 配置正确。

问题出在 Node 实例上。在 Node Ubuntu 服务器上,我更改了 hosts 文件以将 Nginx 的 IP(192.168.134.147)指向 test.com 和 api.test.com。所以现在当我curl test.com在节点 ubuntu 服务器上时,我得到了 Web 响应(这很好)。但是,当我curl api.test.com再次获得 Web 响应时。我想获得 api 响应。我不确定我在这里哪里出了错。对我来说,nginx 服务器在使用 api.localhost 访问自身时可以处理,但当另一台服务器访问它时却无法处理,这没有道理。

如果您需要我进一步解释任何事情,请告诉我。

另外,当我说我将 IP 指向 test.com 和 api.test.com 时,我只是将其添加到我的 hosts 文件中: 192.168.134.147 test.com api.test.com

谢谢!


编辑:

Nginx 服务器配置

这只是我随便想出来的,但可能准确。我没有做任何其他更改,我只是启用了这些网站并禁用了默认网站。

网络服务器:

server {
    listen  80;
    server_name localhost;

    location / {
        # First attempt to serve request as file, then
        proxy_pass 192.168.134.145:3000;
        # as directory, then fall back to proxy
        try_files $uri $uri/ @proxy;
    }

    location @proxy {
         proxy_pass    192.168.134.145:3000;;
    }
}

API 服务器:

server {
    listen  80;
    server_name api.localhost;

    location / {
        # First attempt to serve request as file, then
        proxy_pass 192.168.134.145:8080;
        # as directory, then fall back to proxy
        try_files $uri $uri/;
    }
}

Hosts 文件

nginx 服务器的 hosts 文件刚刚添加了以下内容: 127.0.0.1 localhost api.localhost

答案1

您没有为和server指定块。如果您打算为这些主机名提供服务,它们必须出现在块的指令中。否则,nginx 将从默认虚拟主机(由或 指定的虚拟主机)为它们提供服务。test.comapi.test.comserver_nameserverdefault_server

nginx 如何处理请求在 nginx 文档中可以看到详细的解释。

相关内容