我一直试图在 Digital Ocean Ubuntu 服务器上托管 .NET Core 2.2 应用程序,使用 NGINX 作为 Kestrel 的反向代理,遵循Microsoft 指南。
一切似乎都运行正常,我的默认服务器文件中没有错误,如下所示
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
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-For $scheme;
}
}
# Virtual Host configuration for example.com
server {
listen 80;
listen [::]:80;
# these were here by default
root /var/www/example.com;
index index.html
location / {
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-For $scheme;
}
}
我在 localhost:5000 上运行我的应用程序,dotnet [MyApplication].dll
此时仍然没有错误,但是转到 PostMan 并尝试通过 API 访问时http://<my-server-ip>:80/api/users/new-user
返回 404:
404 未找到
404 未找到
nginx/1.14.0(Ubuntu)
我做错了什么?我是服务器配置新手,所以请多包涵!!!
答案1
原来问题出location /
在开始查找文件的 中try_files $uri $uri/ =404;
。问题在于这是一个提供 JSON 的 Web API,因此一开始就找不到任何内容。删除它并修改虚拟主机配置后,一切正常。