Я запускаю веб-приложение на локальном компьютере, используя gunicorn на 127.0.0.1:8000
. Я хочу сделать его сервисную страницу /demo
доступной на http://127.0.0.1/internal
и переписать все вызовы на / demo на внутренние
Я использую Apache v2.4.
Несколько подходов с использованием mod_proxy
и mod_rewrite
.
# This gives me `ERR_TOO_MANY_REDIRECTS`.
<Location /internal>
ProxyPass http://localhost:8000/demo
ProxyPassReverse http://localhost:8000/demo
RequestHeader add X-Script-Name "/internal"
</Location>
# This works, but I need to visit /internal/demo manually.
<Location /internal>
ProxyPass http://localhost:8000
ProxyPassReverse http://localhost:8000
RequestHeader add X-Script-Name "/internal"
</Location>
Неважно, где разместить ProxyPass ...
ProxyPass /internal http://localhost:8000
ProxyPassReverse /internal http://localhost:8000
<Location /internal>
RequestHeader add X-Script-Name "/internal"
</Location>
По словам разработчика, поддерживается RequestHeader add X-Script-Name
.
Используя NGINX, все работает как положено:
location /internal {
proxy_pass http://localhost:8000;
proxy_set_header Host $http_host;
proxy_set_header X-Script-Name /internal;
rewrite /internal$ /internal/demo redirect;
}
Но добавление этого в Apache2 не помогает:
RewriteRule /internal$ /internal/demo [R,L]