El proyecto **AnPDockerServer** es un pequeño proyecto de muestreo y guía para montar un servidor AnP con Docker, con sus Scripts correspondientes y gestión de dependencias y ficheros locales. El servidor AnP irá puenteado por un servidor Proxy que gestione la salida pública del mismo, al poder ser, mediante un Socket de Dominio Unix (Unix Domain Server o UDS). A medida que vaya desarrollándose dicho proyecto aparecerán nuevas tecnologías y métodos por los que comunicarse mediante puenteo Proxy. Se usará el Docker Compose para gestionar el conjunto de las herramientas, y cada contenedor será Buildeado a partir de un Script que tendrán cada uno acompañado a su correspondiente Dockerfile, el cual será siempre "rebuild.sh". Las nomenclaturas del Dockerfile no será el estándar *Dockerfile* sino que será continuado por el sistema operativo por el que operará separado de un punto, por lo general como *Dockerfile.debian*. La subred del Docker Compose será **172.22.0.0/24** por defecto, y todos los contenedores que éste lance será siempre sobre dicha subred. # Nginx Nginx es una tecnología Proxy de origen ruso Full Open Source muy extendido. Es cierto que existe una alternativa Full Free Open Source, pero en este caso, se decidió montar sobre la tecnología original. > Somos conscientes de que ya existe un contenedor público en Docker Hub de Nginx, sin embargo, éste no sigue el patrón de funcionamiento original de Nginx, pese a ser original y propio de los creadores de Nginx, por lo que se decidió crear de 0 un contenedor base Debian con esta tecnología para que éste coincida con la documentación oficial del mismo, pero eso no quita que pueda ser usado de la misma manera el contenedor oficial que los creadores dejaron público. El servidor Nginx operará directamente sobre la IP **172.22.0.86** y levantará los siguientes puertos: - **80**: Para las salidas y peticiones HTTP. - **443**: Para las salidas y peticiones HTTPS. También compartirá los siguientes directorios: - **/Projects**, *"/Nginx/projects" en local*: Este directorio se usa para compartir y gestionar desde el anfitrión los ficheros de configuración del propio Nginx. - **/Certificates**, *"/certificates" en local*: Este directorio contendría los certificados acordes a los distintos dominios que tengamos registrados en el Nginx. - **/Scripts**, *"/Nginx/scripts" en local*: Este directorio almacena los Scripts para que el OS pueda ejecutar en entorno de ejecución o que el propio usuario habra una nueva terminal mediante "docker exec -it nginx-server bash" y pueda operar de forma más sencilla las diferentes partes que el proyecto toca. - **/var/log/nginx**, *"/Nginx/logs" en local*: Este será un directorio autocreado que contendrá los Logs del propio Nginx compartidos con el anfitrión para que el usuario tenga acceso a los mismos externamente al contenedor y éstos no se pierdan por cada reinicio o apagado del contenedor. - **/tmp/pointers**, *"/Nginx/tmp" en local*: Este directorio se automontará en local y sólo contendrá cosas cuando éste sea usado por el propio Nginx, como es el caso de la creación por parte de terceras aplicaciones un archivo de gestión de comunicación de Sockers de Dominio Unix, por ejemplo. En los proyectos nos encontraremos dos ficheros, los cuales son: - **/Projects/nginx.80.conf**: El cual está diseñado para funcionar sobre el puerto 80, tanto en escucha como en envío, es decir, por el protocolo HTTP. - **/Porjects/nginx.443.conf**: El cual está diseñador para funcionar sobre el puerto 443, tanto en escucha como en envío, es decir, por el protocolo HTTP con SSL, es decir, HTTPS. Éste depende plenamente de los certificados, donde tenemos uno de prueba para opera con éste aunque no concuerde con el dominio que está firmando.