将 Nginx 反向代理指向不同 VM 上的虚拟主机

将 Nginx 反向代理指向不同 VM 上的虚拟主机

我有 1 台运行 Nginx 的 VM,用于将同一 IP 上不同域(子域)的传入请求分发到不同的虚拟机。

我的 Nginx 配置文件目前是一个非常基础的示例。

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

  server_name cloud.something.xyz;

  location / {
      proxy_pass http://192.168.1.77;
  }
} 

这指向了正确的 VM,但它显示该 VM 上的默认 apache 页面,而不是所需的虚拟主机 (cloud.something.xyz)。

如果我将端口转发到http://192.168.1.77直接,那么子域/启用的站点将按预期工作,所以我认为我的 Apache 配置没有问题,问题出在 Nginx 配置方面。

proxy_pass http://192.168.1.77/folderloacation类似的尝试只会给我配置错误和其他神秘的结果

我缺少什么来让代理使用正确的虚拟主机而不是定向到其他虚拟机的默认页面?

答案1

我更了解基于 Apach 的代理配置,但您缺少的是 HTTP 主机标头的保存。

在您的设置中,主机头不会被发送到您配置的代理。

必须使用名为http://wiki.nginx.org/HttpProxyModule#proxy_set_header

您可以在这里找到适当的答案:https://stackoverflow.com/questions/5834025/how-to-preserve-request-url-with-nginx-proxy-pass

相关内容