
내 플라스크 앱이 결국 API가 되어 Windows 서버에서 실행되기를 바랍니다. 저는 Google 도메인에 도메인을 소유하고 있으며 서버로 실행될 컴퓨터의 IP 주소를 사용하여 api.(mydomain)의 DNS를 추가했습니다. 나는 API를 SSL과 https로 만들고 싶었고 웨이트리스 -> nginx -> win-acme를 사용해 왔습니다.
내 디렉토리는 다음과 같습니다: C:\Users\Wreck\Documents\Flask\acme-challenge . 이 폴더 내에서 순수 텍스트로만 test.txt를 만들었습니다.
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
안녕하세요! localhost에 표시됩니다.
그런 다음 몇 시간 동안 테스트한 후에도 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!
윈도우 디펜더를 껐습니다. 내 서버 컴퓨터의 IP 포트 80 및 5000에서 포트 전달을 받았습니다. 또한 포트 80 및 5000에 대해 Windows 방화벽에 대한 인바운드 권한을 설정했습니다.
나는 그것이 읽고 볼 수 있는 권한이 있다고 생각하지만 작업 관리자에서 nginx는 Wreck에서 실행됩니다. 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을 막는 것이라고 생각합니다.