使用 nginx 无法完成 acme-challange / 访问新位置的文件

使用 nginx 无法完成 acme-challange / 访问新位置的文件

我希望我的 flask 应用程序最终成为一个 api,并在 Windows 服务器上运行它。我在 google domains 上拥有一个域名,我添加了 api.(mydomain) 的 DNS,使用它将作为服务器运行的计算机的 IP 地址。我希望让 api 成为 ssl 和 https,并且一直在使用 waitress -> nginx -> win-acme

这是我的目录:C:\Users\Wreck\Documents\Flask\acme-challenge,在这个文件夹中,我仅使用纯文本创建了一个 test.txt。

在 Flask 文件夹中,我有一个 flask 应用程序,目前只打印 hello world。

我的第一步是开始做女服务员:

(venv) C:\Users\Wreck\Documents\Flask>waitress-serve --listen=*:5000 flaskappv1:app
INFO:waitress:Serving on http://[::]:5000
INFO:waitress:Serving on http://0.0.0.0:5000

你好,世界!显示在本地主机上。

然后我设置了 nginx,经过几个小时的测试,我仍然完全不明白为什么从 acme-challenge 返回文本文件仍然会产生错误。这是我的代码:

error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;
    
    
    server {
        listen 80;
        server_name api.rootmusic.app;

        location / {
            proxy_pass http://127.0.0.1:5000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ^~ /.well-known/acme-challenge/ {
            root C:/Users/Wreck/Documents/Flask/acme-challenge/;
            allow all;
            default_type "text/plain";
            try_files $uri =404;
        }
    }
}

以下是我的输出:

C:\WINDOWS\system32>curl http://api.rootmusic.app/.well-known/acme-challenge/test.txt
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

C:\WINDOWS\system32>curl http://api.rootmusic.app/
Hello World!

我已关闭 Windows Defender。我已从服务器计算机的 IP 端口 80 和 5000 进行端口转发。我还为端口 80 和 5000 设置了 Windows 防火墙的入站权限。

我认为这可能是我的读取和查看权限的问题,但在任务管理器中,nginx 从 Wreck 运行,我确信我是管理员用户,并且我检查了整个文件结构的读写权限。

如果这有帮助,这是我尝试使用 win-acme 获取 api 的 HTTPS 时收到的错误。(域)

 Plugin Manual generated source api.rootmusic.app with 1 identifiers
 Plugin Single created 1 order
 Cached order has status invalid, discarding
 [api.rootmusic.app] Authorizing...
 [api.rootmusic.app] Authorizing using http-01 validation (SelfHosting)
 [api.rootmusic.app] Authorization result: invalid
 [api.rootmusic.app] {"type":"urn:ietf:params:acme:error:unauthorized","detail":"(my ip): Invalid response from http://api.rootmusic.app/.well-known/acme-challenge/uQdTJeSYMKLUy9_7dIgEzLZQUay11eYUxvKNcxNPPv4: 404","status":403,"instance":null}
 [api.rootmusic.app] Deactivating pending authorization

您可能已经猜到了,我对系统管理还很陌生。但感谢您读到这里。如果您对切换程序有任何建议或任何更简单的方法,请告诉我,因为我完全陷入困境。我一开始使用 IIC,但因为搞不懂而切换到 nginx。

但是,为什么 nginx 无法读取 acme-challenge 位置中的文件?我猜这也是阻止 win-acme 的原因。

相关内容