Nginx作为带Docker的树莓Pi的反向代理

Nginx作为带Docker的树莓Pi的反向代理,docker,asp.net-core,nginx,Docker,Asp.net Core,Nginx,在我的树莓皮上,我有一个ASP。NET核心示例web应用程序在Docker容器中运行。它已通过以下命令启动: docker run --name aspnetcore_sample --rm -d -p 8000:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp 在SSH会话中,我可以成功地执行curl localhost:8000 现在我想使用Nginx作为反向代理,这样我就可以调用http://myraspi/demo从网络中的任何浏览器

在我的树莓皮上,我有一个ASP。NET核心示例web应用程序在Docker容器中运行。它已通过以下命令启动:

docker run --name aspnetcore_sample --rm -d -p 8000:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp
在SSH会话中,我可以成功地执行
curl localhost:8000

现在我想使用Nginx作为反向代理,这样我就可以调用
http://myraspi/demo
从网络中的任何浏览器。为此,我安装了Nginx和
http://myraspi
正在运行(返回了Nginx欢迎站点)

之后,我创建了包含以下内容的文件
/etc/nginx/sites available/myraspi.conf

server {
    listen 80;
    server_name myraspi;

    location /demo {
        proxy_pass http://localhost:8000/;
    }
}
然后是命令
sudo ln-s/etc/nginx/sites available/myraspi.conf/etc/nginx/sites enabled/myraspi.conf
。 使用
sudo nginx-t
检查成功,并使用
sudo nginx-s reload
最终重新启动

但是,在SSH会话或
http://myraspi/demo
从任何外部浏览器,Nginx都会给我
404未找到


我做错了什么

您确定是nginx提供了404而不是ASP.NET核心应用程序吗?你能通过日志确认一下吗?我询问的原因是,您正在使用nginx在子路径
/demo
上托管应用程序。开箱即用的方法是行不通的,因为ASP.NET核心应用程序不知道该路径,并且会将其视为正常的请求路径。您必须首先配置路径库。退房。谢谢你的回复!所以没有办法通过配置来解决这个问题?因为如果我正确理解你的答案,我必须修改ASP.NET核心示例应用程序的代码。你知道其他方法吗(可能是另一个web服务器)?如果你想在子路径上托管应用程序,实际上没有其他方法。您可以做的是将自定义HTTP头传递给应用程序,并对其进行解释,以便在ASP.NET核心应用程序中动态设置路径基。这样,反向代理就可以从外部对其进行配置,而无需重新编译应用程序。