
Me gustaría que mi aplicación flask eventualmente fuera una API y ejecutarla desde un servidor de Windows. Soy dueño de un dominio en los dominios de Google, agregué un DNS de API (midominio) usando la dirección IP de la computadora que se ejecutará como servidor. Quería que la API fuera SSL y https y he estado usando Waitress -> nginx -> win-acme
Aquí está mi directorio: C:\Users\Wreck\Documents\Flask\acme-challenge. Dentro de esta carpeta hice un test.txt con solo texto puro.
En la carpeta Flask, tengo una aplicación de matraz que por ahora solo imprime hola mundo.
Mi primer paso es empezar a ser camarera:
(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
¡Hola Mundo! se muestra en localhost.
Luego configuré nginx, después de horas de pruebas, todavía estoy completamente atascado en cuanto a por qué devolver el archivo de texto de acme-challenge todavía produce un error. Aquí está mi código:
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;
}
}
}
Y aquí están mis resultados:
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!
He desactivado windows defender. He reenviado puertos desde los puertos IP 80 y 5000 de mi computadora servidor. También configuré permisos de entrada para el firewall de Windows para los puertos 80 y 5000.
Creo que podría ser algo con mis permisos para leer y ver, pero en el administrador de tareas, nginx se ejecuta en Wreck, que soy yo y estoy bastante seguro de que soy un usuario administrador y verifiqué los permisos de lectura y escritura para toda la estructura de archivos.
Si esto es útil, este es el error que recibo cuando intenté usar win-acme para obtener HTTPS para la API. (Dominio)
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
Como habrás adivinado, soy bastante nuevo en la administración de sistemas. Pero gracias por leer hasta aquí. Si tiene sugerencias sobre cómo cambiar de programa o alguna forma de hacerlo más fácil, hágamelo saber, porque estoy completamente estancado. Comencé con IIC pero cambié a nginx porque no podía entenderlo.
Pero sí, ¿por qué nginx no puede leer archivos en la ubicación acme-challenge? Supongo que eso es lo que también está deteniendo a Win-Acme.