Назад | Перейти на главную страницу

Перенаправить вызовы api с поддомена на основной домен с помощью Location proxyPass

Я хочу перенаправить свои вызовы API из субдомена в основной домен. Мой сервер api находится на example.com. URL запроса http://foo.example.com/api?service=work&action=all_work, но вызовы моей файловой системы должны проходить.

<VirtualHost *:80>
    ServerName example.com
    ServerAlias foo.example.com

    RewriteEngine On
    <Proxy *>
            Order Allow,Deny
            Allow from all
    </Proxy>
    <Location /api>
            ProxyPass http://othersite.com/api retry=0
            SetOutputFilter DEFLATE
    </Location>
    DocumentRoot /var/www/example

    RewriteCond %{HTTP_HOST} ^(foo.example.com)$ [NC]
    RewriteCond %{REQUEST_URI} =/
    RewriteRule (.*) /var/www/example/index.html [L]

    RewriteCond %{HTTP_HOST} ^(foo.example.com)$  [NC]
    RewriteCond %{REQUEST_URI} !=/
    RewriteRule  (.*) /var/www/example/$1 [L]

</VirtualHost>

Но я получаю 404 в браузере.

Вместо использования прокси-прохода мы можем иметь точный контроль над ним с помощью RewriteCond и RewriteRule и использовать флаг [P] mod_proxy

RewriteCond %{HTTP_HOST} ^(monitor.whatfix.com)$ [NC]
RewriteCond %{REQUEST_URI} =/api
RewriteRule (.*) http://othersite.com/api [P,L]

Если запрос из поддомена, я переписываю его на другой сайт.