了解Vapor+nginx的网络配置

了解Vapor+nginx的网络配置

我在 Ubuntu 服务器上MyApp运行了Vapor App ,并安装了 nginx 以通过 连接到它。它可以工作,但我不明白它的以下部分:localhost:8080<server-ip>:80

为了让它工作,我遵循了关于如何托管 Vapor 应用程序的小教程。nginx 配置文件的一部分必须设置如下:

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

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

我现在应该能够MyApp使用<server-ip>:80,但这不起作用。正如MyApp提示符开始的那样:

服务器启动于http://本地主机:8080

我将 nginx 配置中的服务器块更改为:

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

    location / {
        proxy_pass http://localhost:8080; // Changed to localhost
    }
}

这有效,我现在能够到达了MyApp

netstat 显示以下条目:

[...]:~# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address  State     PID/Program name
tcp        0      0 0.0.0.0:80        0.0.0.0:*        LISTEN    1106/nginx: master
tcp        0      0 127.0.0.53:53     0.0.0.0:*        LISTEN    601/systemd-resolve
[...] // my ssh connection
tcp6       0      0 ::1:8080          :::*             LISTEN    8145/<MyApp>
tcp6       0      0 :::80             :::*             LISTEN    1106/nginx: master
  • 因此,我的 Vapor 应用程序似乎在 tcp6 上运行。我是服务器开发新手,认为 localhost 相当于127.0.0.1。为什么我的更改会让它工作?
  • 当我更改为本地主机后,我可能会遇到其他问题吗?

答案1

该名称除了相当于IPv4地址之外,还localhost相当于IPv6地址。::1127.0.0.1

在过去的近 20 年左右的时间里,IPv6 一直是比 IPv4 更受青睐的协议,因此当 IPv6 地址可用于某个名称时,将会首先尝试该地址。

这意味着,除非有人竭尽全力禁用 IPv6,否则几乎每台现代设备都可以localhost连接到。在某些操作系统(如 Windows)上,IPv6 无论如何都无法禁用,因此始终可以连接到。::1localhost::1

相关内容