- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 Kestrel 上运行的 dotnet 应用程序,并将其托管在 GKE 上的 Linux 容器中。除了容器,我还运行一个 sidecar nginx 容器来代理它。我读到 Kestrel 的功能并不丰富,因此包括 nginx sidecar。
我遇到的问题是我一直收到 502 或 404 not found。不过,在重定向之后运行本地 curl 请求确实有效。
这从我的 nginx -> Kestrel 返回了正确的响应
curl -vL "http://127.0.0.1"
通过公共(public) lb 从外部命中它,
response 404 (backend NotFound), service rules for [ /index.html ] non-existent
``
This is my nginx.conf
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream web-api {
server 127.0.0.1:5000;
}
server {
listen 80;
server_name $hostname;
location /nginx-health {
return 200 "healthy\n";
}
location / {
proxy_pass http://web-api;
proxy_redirect off;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
我的入口
Name: app
Namespace: app
Address: 34.120.149.155
Default backend: default-http-backend:80 (<none>)
TLS:
app-tls terminates external_url
Rules:
Host Path Backends
---- ---- --------
<external_url>
/ app:80 (10.108.21.149:80)
Annotations:
certmanager.k8s.io/cluster-issuer: letsencrypt
ingress.kubernetes.io/forwarding-rule: k8s2-fr-6bwo4q66-app-2jv0uft5
ingress.kubernetes.io/https-forwarding-rule: k8s2-fs-6bwo4q66-app-2jv0uft5
ingress.kubernetes.io/https-target-proxy: k8s2-ts-6bwo4q66-app-2jv0uft5
ingress.kubernetes.io/target-proxy: k8s2-tp-6bwo4q66-app-2jv0uft5
ingress.kubernetes.io/url-map: k8s2-um-6bwo4q66-app-2jv0uft5
meta.helm.sh/release-name: app
ingress.kubernetes.io/backends: {"k8s-be-30587--b22f31f8e3f41440":"HEALTHY","k8s-be-31967--b22f31f8e3f41440":"HEALTHY"}
ingress.kubernetes.io/ssl-cert: k8s2-cr-6bwo4q66-rn3hwilrxhwvg79m-506e1c732112861c
ingress.kubernetes.io/static-ip: k8s2-fr-6bwo4q66-labs-createstudio-createdataservice-2jv0uft5
meta.helm.sh/release-namespace: app
我的服务
Name: app
Namespace: app
Labels: app.kubernetes.io/instance=app
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=app
app.kubernetes.io/version=0.1.0
helm.sh/chart=app-0.1.0
Annotations: beta.cloud.google.com/backend-config: {"ports": {"80":"app-config"}}
meta.helm.sh/release-name: app
meta.helm.sh/release-namespace: app
Selector: app.kubernetes.io/instance=app,app.kubernetes.io/name=app
Type: NodePort
IP: 10.181.45.135
Port: http 80/TCP
TargetPort: 80/TCP
NodePort: http 30587/TCP
Endpoints: 10.108.21.149:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
我将所有名称/命名空间/网址更新为更通用的内容,这样我就不会在我的应用程序中暴露太多信息。
我有一种感觉,这是因为主机上的入口路径只是 /
。
我还注意到,当从外部访问 nginx 时,我得到一个 301 重定向,它代理到 Kestrel 服务器。在那之后,Kestrel 将 301 返回给 nginx,我觉得这就是循环所在的地方。即当Kestrel返回response时,它再次通过外部URL出去,将请求从外部发回给nginx。希望这是有道理的。
希望任何人都可以阐明这一点。干杯!
最佳答案
由于 GKE ingress controller 可以充当您的反向代理(例如提供 SSL 终止),因此无需添加 nginx sidecar,您可以将请求直接路由到容器应用程序。
关于.net - GKE 中的 dotnet 应用程序与 nginx 入口 Controller 和代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64186353/
我在 Ubuntu v16.04 上安装了 dotent core。问题是当我尝试使用 dotnet user-secrets 时它说:未找到匹配命令“dotnet-user-secrets”的可执行
好。这似乎是我看到答案时会面对的问题类型。 所以... 为什么要打扰 dotnet build做之前dotnet publish ? build自动执行 restore .凉爽的。 好像publish
我正在尝试创建一个 dotnet 新模板的 NuGet 包。我创建了一个 nuspec 文件来设置包的详细信息,它位于我的内容文件夹旁边,其中包含我想要打包的所有内容: My.
我正在尝试使用'dotnet dev-certs'工具导出https证书以包含在Docker镜像中。现在我正在使用: dotnet dev-certs https -v -ep $(HOME)\.as
我昨天从 .Net 5 更新到 .Net 6,现在我的项目无法从 dotnet run 开始。然后我得到错误: Building... warn: Microsoft.AspNetCore.Serve
我使用 dockerfile 成功构建,但是当我尝试从构建镜像运行新容器时,出现以下错误: 我必须为解决方案做什么? Error : /bin/sh: 1: [dotnet,: not found d
我有一个引用其他几个项目的 .NET Core 3 项目。我的主根项目有一个 Release-X构建配置,但其他项目只有 Release配置,无匹配 Release-X配置。 当我尝试使用这个发布我的
我的 dotnet new 列表中有许多“孤立的”dotnet 模板。 它们不再存在于我的驱动器上,因为我删除了文件夹,所以我不能 dotnet new --uninstall。 有没有办法从列表中删
编辑: 以下是最初与标题一起发布的前一个问题 xunit show ITestOutputHelper output when run in the console 经过调查(见评论),这个问题仍然非
来自 docs.microsoft.com: dotnet build - Builds a project and all of its dependencies. dotnet run - Run
我有一个 Dotnet 核心项目,我试图在其中安装 Microsoft.EntityFrameworkCore.Tools.Dotnet 以使用迁移。我在 Mac 上,所以我使用 MySql.Data
我已经在这个问题上徘徊了很长一段时间,但仍然没有找到答案,也没有其他帖子处理同样的问题。 我已经发布了一个 .net 5.0 网站,如果我在同一个发布的文件夹中运行 dotnet,一切都会正常运行。在
我正在尝试使用 CLI dotnet 命令复制以下 Azure 管道: - task: DotNetCoreCLI@2 inputs: command: publish publi
假设这个文件夹结构 SampleApp global.json Src Web pro
我正在使用dotnet watch命令来运行asp.net core项目。但是,默认情况下,它选择 Production 作为环境。 我已经尝试了这两个选项: 1) > dotnet watch AS
我正在尝试在 Linux 主机上的官方 Microsoft/dotnet 镜像之外的容器中构建一个 dotnet 项目,因为该镜像与 Windows 和 Linux 都兼容。我只有 linux 主机,
我不是 Linux 用户,所以这可能是一个简单的修复,但我已经尝试了以下方法: 首先我使用命令 curl -sSL https://dot.net/v1/dotnet-install.sh | bas
我在发布配置文件中遇到了 Visual Studio 和 EF 迁移的奇怪情况。鉴于: Visual Studio 2019 v16.4 .NET 核心项目。目标 .NET Core 3.1 EF 3
我已经安装了 .NET Core 1.0.1 以与 VS 2015 Update 3 一起使用,并且以管理员身份运行(在 Windows 8.1 x64 上)。 如果我创建任何 .NET Core 项
我正在尝试为dotnet core 2创建开发Dockerfile。到目前为止,我的工作是: FROM microsoft/aspnetcore-build:2.0 VOLUME /app WORKD
我是一名优秀的程序员,十分优秀!