Nginx 如何按位置路由到反向代理
Nginx How do i route to reverse proxy by location
目前我正在使用 nginx 服务器并使用 nodejs 服务器作为反向代理。
我想使 nginx 服务器 proxy_pass 根据位置不同的服务器。
所以,假设我的域是 subdomain.domain.com
。
加载 subdomain.domain.com/
时,这应该提供静态文件。
加载 subdomain.domain.com/example1/req1/req2
时,这应该路由到 127.0.0.1:3000/req1/req2
。
加载 subdomain.domain.com/example2/req1/req2
时,这应该路由到 127.0.0.1:8080/req1/req2
。
但我的配置路由 subdomain.domain.com/example1/req1/req2
到 127.0.0.1:3000/example1/req1/req2
导致错误。 (nodejs returns 无法获取 /example1)
我应该如何正确编写这个 nginx conf 文件?
尝试在位置块中使用重写指令。
类似于:
location /example1/ {
rewrite ^/example1/(.*)$ / break;
proxy_pass http://xxxxxx;
}
您可以在http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
查看rewrite模块的相关文档
您需要将以下代码片段添加到您的 nginx.conf。
server subdomain.domain.com;
location / {
rewrite ^/example1/(.*)$ / break;
proxy_pass http://127.0.0.1:3000;
}
}
目前我正在使用 nginx 服务器并使用 nodejs 服务器作为反向代理。 我想使 nginx 服务器 proxy_pass 根据位置不同的服务器。
所以,假设我的域是 subdomain.domain.com
。
加载 subdomain.domain.com/
时,这应该提供静态文件。
加载 subdomain.domain.com/example1/req1/req2
时,这应该路由到 127.0.0.1:3000/req1/req2
。
加载 subdomain.domain.com/example2/req1/req2
时,这应该路由到 127.0.0.1:8080/req1/req2
。
但我的配置路由 subdomain.domain.com/example1/req1/req2
到 127.0.0.1:3000/example1/req1/req2
导致错误。 (nodejs returns 无法获取 /example1)
我应该如何正确编写这个 nginx conf 文件?
尝试在位置块中使用重写指令。
类似于:
location /example1/ {
rewrite ^/example1/(.*)$ / break;
proxy_pass http://xxxxxx;
}
您可以在http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
查看rewrite模块的相关文档您需要将以下代码片段添加到您的 nginx.conf。
server subdomain.domain.com;
location / {
rewrite ^/example1/(.*)$ / break;
proxy_pass http://127.0.0.1:3000;
}
}