Nginx:如何使用proxy\u pass将请求转发到端口

Nginx:如何使用proxy\u pass将请求转发到端口,nginx,virtualhost,server,proxypass,Nginx,Virtualhost,Server,Proxypass,我刚刚开始使用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

我刚刚开始使用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
中创建了一个符号链接

我所期望的是: 我在8080端口上运行。当我转到
api.mydomain.com/users
时,我希望从部署的api获得JSON响应,但没有得到响应

此外,我对
www.mydomain.com
的301重定向也不起作用。那块代码是我复制的

我所尝试的:
  • 确认
    mydomain.com:8080/users
    $curl
    http://127.0.0.1:8080/users
    返回预期的响应
  • 在对服务器块进行更改后,重新启动了nginx服务
  • 已尝试删除代理集标题行

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

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

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

事实证明,我的问题不是Nginx配置,而是DNS设置。我必须为我的每个子域(
www
api
)创建一个
A NAME
记录。新手犯的错误


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

我也这么认为,但它不起作用……这就是我选择regex路线的原因。配置中一定有其他内容。我的另一个服务器块只提供静态页面,工作正常。