Nginx
子目錄上的代理傳遞不起作用
我有一個在http://127.0.0.1:9650執行的 api 。例如,下面給出一個 json 對像作為響應:
curl http://127.0.0.1:9650/ext/health
我想在https://example.com/my-node/ext/health進行以下工作。
我有以下 nginx 配置:
location /my-node { proxy_pass http://127.0.0.1:9650; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
但這似乎不起作用(我得到了 404)
我嘗試添加:
proxy_redirect http://127.0.0.1:9650 /my-node;
但那裡也沒有運氣。有沒有人建議我如何解決這個問題?
proxy_pass
如果不使用可選的 URI(例如proxy_pass http://127.0.0.1:9650;
),則請求的 URL 會未經修改地向上游傳遞。所以
https://example.com/my-node/ext/health
被傳遞到上游http://127.0.0.1:9650/my-node/ext/health
- 注意“/my-node”部分保持不變。在前綴中使用可選 URI將通過
proxy_pass
用可選 URI 替換位置前綴來轉換請求的 URL 。location
例如:
location /my-node/ { proxy_pass http://127.0.0.1:9650/; ... }
在這種情況下,可選的 URI 是
/
,因此在請求的 URL 中,我們在傳遞上游之前/my-node/
替換為。/
所以
https://example.com/my-node/ext/health
被傳遞到上游http://127.0.0.1:9650/ext/health
- 注意“/my-node”部分已被刪除。有關詳細資訊,請參閱proxy_pass 指令。