サーバーでnode.jsのアプリを動かすと度々このような自体に見舞われます。
フレームワークはnuxt.jsです。

そもそも127.0.0.1というのはマシン内部のプライベートなipであり
グローバルipとは違うはずだと思うのですが

例えばローカルマシンの127.0.0.1:4000でapサーバーを起動させている間
サーバーにデプロイしているアプリ127.0.0.1:3000から127.0.0.1:4000へリクエストすると
ローカルマシン上で稼働させている127.0.0.1:4000のアプリにリクエストが飛んできます。

正直、どういう理屈なのか全くわかりません。
そもそも、サーバー内では127.0.0.1:3000はnginxで公開しています。
127.0.0.1:4000は公開していません。
リバースプロキシをやって公開しているのは127.0.0.1:3000だけです。

そもそも何がやりたいというと
127.0.0.1:4000のapiは誰彼構わず叩かれたくないので
公開したくないのです。
ただし127.0.0.1:3000のアプリからだけは利用したい

サーバー内のlocalhostを
同サーバーから公開されているアプリのみ利用可能とする方法は無いのでしょうか?

なに分、元々フロントエンドエンジニアなもので
サーバーのその辺の事情が分かっていません。

安全性から言ったら当然、公開するサーバー、非公開でlocalhostとしてだけ動かすサーバーという
構成でアプリは運用できるものと思っていたのですが
違うのでしょうか?

127.0.0.1:3000のアプリで
127.0.0.1:4000のapiを叩かせようと思ったら
やはり127.0.0.1:4000のapiも公開した上で
nginxの設定やらで同サーバーからのみ利用可能な設定にしてやらなければならないのでしょうか?

もはやlocalhostがなぜこのような仕組みになっているのか
わけが分からないです。

詳しい方ご教示頂けないでしょうか?
よろしくお願いします。