Ubuntu

無法訪問 VM 上的子域:Ubuntu Server

  • July 24, 2018

我是從堆棧溢出被發送到這裡的——如果這是錯誤的論壇,對不起。我正在嘗試建立一個模擬多台伺服器的本地開發環境。我只是想了解更多有關此的資訊,這是我第一次這樣做。簡而言之,我無法訪問我的 nginx 實例上的子域。

所以基本上我有 3 個 Ubuntu VM 正在執行。一個有 Nginx,一個有兩個節點實例(web 和 api),一個是 mongodb。如果我要進入 nginx 伺服器並curl localhost獲得 Web 響應(這很好)。如果我要curl api.localhost我得到 api 響應(這也很好)。我認為這意味著 nginx 配置正確。

問題在於節點實例。在 Node Ubuntu 伺服器上,我更改了 hosts 文件以將 Nginx 的 IP(192.168.134.147)指向 test.com 和 api.test.com。所以現在當我curl test.com在節點 ubuntu 伺服器上時,我得到了網路響應(這很好)。但是,當我curl api.test.com再次收到網路響應時。我想得到 api 響應。我不確定我在哪裡出錯了。對我來說,nginx 伺服器在使用 api.localhost 命中自身時可以處理,但在另一台伺服器命中它時無法處理,這對我來說沒有意義。

如果您需要我進一步解釋,請告訴我。

另外,當我說我將 ip 指向 test.com 和 api.test.com 時,我只是將其添加到我的主機文件中: 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/;
   }
}

主機文件

nginx 伺服器的 hosts 文件只是添加了一個: 127.0.0.1 localhost api.localhost

你沒有server積木 fortest.comapi.test.com。如果您打算提供這些主機名,它們必須出現在塊的server_name指令中server。否則,nginx 將從預設虛擬主機為它們提供服務,該主機是由指定的default_server虛擬主機或第一個虛擬主機。

有關詳細說明,請參閱nginx 文件中的 nginx如何處理請求

引用自:https://serverfault.com/questions/923329