Nginx:如何使用 proxy_pass 将请求转发到端口

Nginx: How to forward requests to a port using proxy_pass

我刚刚开始使用 Nginx,我正在尝试设置一个服务器块以将子域 api.mydomain.com 上的所有请求转发到端口 8080。

这是我得到的:

更新:

server {
  server_name api.mydomain.com;

  location / {
    proxy_pass http://127.0.0.1:8080/;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-for $remote_addr;
  }
}

server {
  server_name www.mydomain.com;
  return 301 $scheme://mydomain.com$request_uri;
}

server {
  server_name mydomain.com;

  root /var/www/mydomain.com;
  index index.html index.htm;

  location / {
    try_files $uri $uri/ =404;
  }
}

服务器块存在于 /etc/nginx/sites-available 中,我在 /etc/nginx/sites-enabled 中创建了一个符号链接。

我的期望:

我 运行 deployd 在端口 8080 上。当我转到 api.mydomain.com/users 时,我希望从已部署的 API 得到 JSON 响应,但我没有得到任何回应。

此外,我的 www.mydomain.com 的 301 重定向无效。该块是我从 Nginx Pitfalls.

复制的代码

我尝试过的:

知道我在这里遗漏了什么吗?

您不需要为您的用例显式捕获 URL。以下应该适用于您的位置块:

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
}

事实证明,我的问题不在于 Nginx 配置,而在于我的 DNS 设置。我必须为我的每个子域(wwwapi)创建一个 A NAME 记录。菜鸟错误。

我的一位同事实际上帮助我解决了这个问题。我们在本地机器上使用 telnet 通过 IP 地址连接到服务器时发现了这个问题,并且看到 Nginx 事实上正在做我想要的事情。