
最終的には Flask アプリを API にして、Windows サーバーで実行したいと考えています。Google Domains にドメインを所有しており、サーバーとして実行されるコンピューターの IP アドレスを使用して、API.(mydomain) の DNS を追加しました。API を SSL と https にしたかったので、waitress -> nginx -> win-acme を使用しています。
私のディレクトリは次のとおりです: C:\Users\Wreck\Documents\Flask\acme-challenge 。このフォルダ内に、純粋なテキストのみを含む test.txt を作成しました。
Flask フォルダーには、今のところ hello world を出力するだけの Flask アプリがあります。
私の最初のステップはウェイトレスを始めることです。
(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
Hello world! がローカルホストに表示されます。
その後、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 を停止させている原因でもあると思います。