Nginx
nginx 中的 ProxyPass
我正在嘗試使用以下配置在 nginx 中進行 proxy_pass:
location /abc_service { proxy_pass http://127.0.0.1:3030; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
但是我在我的應用程序(執行在埠 3030 上的 rails 應用程序)中將 /abc_service 作為前綴。例如:我得到 ‘/abc_service/users/sign_in’ 應該是 ‘/users/sign_in’
我想刪除這個前綴。
它在 apache 中執行良好:
ProxyPass /abc_service http://localhost:3030 timeout=300 KeepAlive=On ProxyPassReverse /abc_service/ http://localhost:3030/
的操作
proxy_pass
在nginx文件中有說明:http: //nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass請求 URI 被傳遞給伺服器,如下所示:
如果 proxy_pass 指令是用一個 URI 指定的,那麼當一個請求被傳遞到伺服器時,與該位置匹配的規範化請求 URI 的部分將被指令中指定的 URI 替換:
location /name/ { proxy_pass http://127.0.0.1/remote/; }
如果 proxy_pass 沒有指定 URI,則請求 URI 以與處理原始請求時客戶端發送的相同格式傳遞給伺服器,或者在處理更改的 URI 時傳遞完整的規範化請求 URI:
location /some/path/ { proxy_pass http://127.0.0.1; }
所以,你需要使用這個:
location /abc_service { proxy_pass http://127.0.0.1:3030/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }