Apache-2.2

將 Nginx 反向代理指向不同 VM 上的虛擬主機

  • December 19, 2018

我有 1 台執行 Nginx 的虛擬機將同一 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和類似的嘗試只會給我配置錯誤和其他神秘的結果

為了讓代理使用正確的虛擬主機而不是指向其他虛擬機預設頁面,我缺少什麼?

我更了解基於 Apache 的代理配置,但您缺少的是 HTTP 主機標頭的保留。

在您的設置中,主機標頭不會發送到您配置的代理。

您必須使用名為http://wiki.nginx.org/HttpProxyModule#proxy_set_header的模組來保存它

可以在這裡找到適當的答案:https ://stackoverflow.com/questions/5834025/how-to-preserve-request-url-with-nginx-proxy-pass

引用自:https://serverfault.com/questions/946015