Url 如何在Asp.net内核中设置~/路径
此答案:表示如果应用程序位于虚拟目录中,URL中的Url 如何在Asp.net内核中设置~/路径,url,asp.net-core,razor,Url,Asp.net Core,Razor,此答案:表示如果应用程序位于虚拟目录中,URL中的~/将设置为应用程序的实际根目录 但是,我似乎找不到如何设置此路径/值 例如,我在nginx reverse proxy后面有一个应用程序,因此应用程序的根在这里:www.mywebsite.com/app1/ 因此,我希望所有的~/都扩展到app1/。我怎样才能做到这一点 我尝试了app.UsePathBase(“/app1”),它似乎没有做任何事情 我的nginx配置如下所示: server { server_name: apps.myw
~/
将设置为应用程序的实际根目录
但是,我似乎找不到如何设置此路径/值
例如,我在nginx reverse proxy后面有一个应用程序,因此应用程序的根在这里:www.mywebsite.com/app1/
因此,我希望所有的~/
都扩展到app1/
。我怎样才能做到这一点
我尝试了app.UsePathBase(“/app1”)在Startup.cs
中的Configure
方法中的code>,它似乎没有做任何事情
我的nginx配置如下所示:
server {
server_name: apps.mywebsite.com
location / {
...
}
location /app1/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:5000/;
}
#Https stuff ...
}
我是否缺少可以从nginx传递到asp.net的内容?结果表明,错误确实存在于我的nginx配置中 通过以下有关asp和nginx的文档: 我将我的nginx配置更改为:
...
location /app1/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
...
和
~
正确展开。~
将展开到内容根目录。这是为传入请求配置的基本路径
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/;
}
现在,
/app1/foo
上的传入请求将转换为应用程序中的同一路径,将使用/app1
路径库,~
应正确扩展到/app1
您能显示nginx配置吗?另外,~
在您的设置中扩展到什么?@poke~扩展到几乎没有,它只是被删除。
app.UsePathBase("/app1");