Apache 的 ProxyPass 和重写内部位置

Apache 的 ProxyPass 和重写内部位置

我需要将以下 nginx 配置转换为 apache:

location /api {
    rewrite  ^/api/(.*)$  /$1 break;
    proxy_pass http://service.local:8989;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} 

上述规则只是将 /api 后面的部分 URL 代理到另一台服务器。我不知道如何在 apache 中实现它...据我所知,在 apache 中无法在位置内定义重写规则。

答案1

阿帕奇你不需要重写,下面将“转发”一个请求example.com/api/login?user=nameservice.local:8989/login?user=name

 ProxyPass /api http://service.local:8989/
 ProxyPassReverse /api http://service.local:8989/
 ProxyAddHeaders On
 ProxyPreserveHost On    # Typically not needed but keeps options the same as in question

功能与上面相同,但语法更类似于 nginx,是在 Location 指令中设置 ProxyPass 指令:

 <Location /api>
    ProxyPass http://service.local:8989/
    ProxyPassReverse http://service.local:8989/
    ProxyAddHeaders On
    ProxyPreserveHost On
 </Location>

相关内容