簡體   English   中英

Nginx 位置重寫規則在 ELB 后面不起作用

[英]Nginx location rewrite rules not working behind ELB

我在 App Load Balancer 后面有 2 個 ec2 實例,它們根據路徑將流量重新路由到所需的實例:

  • www.example.com/hello => 實例 1
  • www.example.com/goodbye => 實例 2

Nginx 服務器配置

# Hello server config
server {
    listen       80;
    server_name  localhost;

    location / {
        root  /home/ubuntu/welcome;
    }

    location = /hello {
        root  /home/ubuntu/api;
    }
# Goodbye server config
server {
    listen       80;
    server_name  localhost;

    location / {
        root  /home/ubuntu/welcome;
    }

    location = /goodbye {
        root  /home/ubuntu/api;
    }

我在配置文件中指定的根文件夾下的每個服務器中創建了一個簡單的 index.html 文件,以便 instance1 返回“Hello”,instance2 返回“Goodbye”。 但是 www.example.com/hello 和 www.example.com/goodbye 總是返回 404 not found。 我確實重新加載了我的 Nginx 服務,甚至重新啟動了。

PS:為了測試,我創建了另一個實例,Nginx 沒有隱藏在 ELB 后面,並將配置編輯為看起來相似,它似乎可以工作,所以我不確定我對 ELB 后面的那些做錯了什么。

通過將根移動到位置括號之外並更新我的文件夾的名稱以匹配位置的名稱,設法解決了這個問題,並且它可以工作。 所以現在看起來像這樣。

server {
        listen       80;
        server_name  localhost;
        root  /home/ubuntu/api;

        location / {        
        }

        location = /hello {
        }
}

你好源代碼的路徑是/home/ubuntu/api/hello/

再見源代碼的路徑 => /home/ubuntu/api/goodbye/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM