無法訪問 VM 上的子域:Ubuntu Server
我是從堆棧溢出被發送到這裡的——如果這是錯誤的論壇,對不起。我正在嘗試建立一個模擬多台伺服器的本地開發環境。我只是想了解更多有關此的資訊,這是我第一次這樣做。簡而言之,我無法訪問我的 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.com
和api.test.com
。如果您打算提供這些主機名,它們必須出現在塊的server_name
指令中server
。否則,nginx 將從預設虛擬主機為它們提供服務,該主機是由指定的default_server
虛擬主機或第一個虛擬主機。有關詳細說明,請參閱nginx 文件中的 nginx如何處理請求。