nginx 配置可以通过 curl 运行,但是不能通过浏览器运行?

nginx 配置可以通过 curl 运行,但是不能通过浏览器运行?

我有一个类似于这样的 nginx 配置:

# mysite.com nginx config
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /usr/share/mysite.com/ui;
        index index.html;
        server_name lbhost;

        location /ads.txt { 
            alias /usr/share/mysite.com/ads.txt; 
        }

        location /api/ {
            proxy_pass       http://localhost:5000/api/;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-NginX-Proxy true;
            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;
        }

        location / {
            proxy_pass http://localhost:4000;
        }
}

负载平衡服务器具有 .NET Core Web API 和 Angular Universal UI。这似乎运行得很好,但是

... api 代理似乎可以工作,根路径也可以,并且(通常)ads.txt 文件也可以,但是...如果我执行类似

ubuntu@my-host-name:~$ curl http://localhost/api/version

...从本地机器,我将收到如下响应:

2020.5.13.4ubuntu@my-host-name:~$

...但是如果我从浏览器访问这个端点,我得到的是一个完全空白的页面...甚至源代码也是空的。我希望至少在页面的源文档中看到文本“2020.5.13.4”。

我需要如何配置我的 nginx 服务才能正确发送响应?

更新

根据请求,以下是带有标头的响应:

ubuntu@my-host-name:~$ curl -i http://localhost/api/version
HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Thu, 21 May 2020 17:00:37 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive

2020.5.13.4ubuntu@my-host-name:~$

此外,访问日志报告如下:

ip source redacted - - [21/May/2020:11:02:20 +0000] "GET /api/version HTTP/1.1" 200 21 "-" "curl/7.58.0"
ip source redacted - - [21/May/2020:11:04:05 +0000] "GET /api/version HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"

答案1

检查您的 UFW 或防火墙配置。

我遇到了一个问题,UFW 有 HTTP 规则但没有 HTTPS 规则,curl 能够获取 index.html 条目,但不能在浏览器或 postman 上获取。

答案2

我设法使用 https 而不是 http 解决了该问题。

答案3

我遇到这种情况是因为我正在重定向到 HTTPS,但我没有加密证书。

一旦我使用 certbot 添加证书,我就可以提供我的索引页面。

我使用了这个指南:https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04

相关内容