~
расширится до корня контента. Это фактически база пути, настроенная для входящего запроса.
Что app.UsePathBase()
делает, так это сообщает приложению, что , когда входящий запрос начинается с указанного префикса, тогда он будет использоваться в качестве базы пути. Так что в вашем случае, когда входящий запрос начинается с /app1
, тогда /app1
будет основой пути, а ~
будет расширен до /app1
.
Если вы посмотрите на конфигурацию обратного прокси-сервера, вы увидите, что путь /app1
фактически не передается приложению:
location /app1/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:5000/;
}
Таким образом, при доступе к странице на /app1/foo
путь запроса, который передается приложению, будет просто /foo
. Таким образом, база путей /app1
не видна приложению, и она не сможет ответить соответствующим образом.
Вместо этого вам нужно передать полный путь к приложению. Затем вы используете app.UsePathBase()
, чтобы сконфигурировать эту базу путей, чтобы она правильно интерпретировалась:
location /app1/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:5000/app1/;
}
app.UsePathBase("/app1");
Теперь входящие запросы на /app1/foo
будут преобразовываться в тот же путь в вашем приложении, будет использоваться база путей /app1
, и ~
должен должным образом расширяться до /app1
.