Lorsque vous souhaitez essayer une technologie utilisée pour les entreprises ou une nouvelle technologie, configurez un serveur Web sur AWS, préparez une API ou une page de test, connectez-vous avec http à partir d'un terminal Chrome ou Android local, et faites-le très bien. .. C'est bien pour vérifier la communication de RestAPI, mais si vous souhaitez l'utiliser pour la vérification WebRTC ou WebSocket, il y avait un problème que vous ne pouviez pas vérifier l'opération car une erreur se produirait à moins que le site n'ait activé SSL. Après avoir vérifié s'il serait possible de configurer un serveur Web bon marché et non un certificat oléore d'une manière ou d'une autre, il s'est avéré que si vous utilisez Freenom et Let's Encrypt, vous pouvez configurer un serveur https avec votre propre domaine presque gratuitement.
Si vous recherchez la méthode d'acquisition de domaine avec Freenom, la méthode d'acquisition de certificat SSL avec Let's Encrypt, la méthode de configuration avec AWS, etc., il y a des fragments, mais comme il n'y avait pas d'article complet, je le laisserai ici comme un mémorandum. Garde le.
Je vais le faire immédiatement. Les domaines sont obtenus à l'aide d'un service appelé Freenom. Freenom est un service à l'étranger qui vous permet d'acquérir un domaine gratuitement. Vous pouvez obtenir gratuitement XXXX.tk, XXXX.ml, XXXX.ga, etc. en tant que nom de domaine. https://www.freenom.com/ja/index.html
Vous pouvez obtenir le domaine que vous aimez, alors entrez le domaine que vous souhaitez obtenir. Vérifiez si elle est disponible, et si elle est disponible, l'écran ci-dessous s'affichera. Cliquez sur "Obtenir maintenant!" Et ensuite sur "Vérifier".
Il semble que vous puissiez l'utiliser gratuitement jusqu'à 12 mois, alors utilisons-le au maximum. Sélectionnez "12 mois @ GRATUIT" dans Période et appuyez sur "Continuer".
** Assurez-vous que le montant est de 0,00 USD (gratuit) **. S'il n'y a pas de problème, connectez-vous pour acheter. Dans mon cas, je suis déjà inscrit, donc je me connecte généralement avec Google. Si vous ne vous êtes pas inscrit pour la première fois, vous devrez peut-être vous inscrire de différentes manières.
Encore une fois, ** confirmez que le montant est de 0,00 USD (gratuit) **, vérifiez l'accord sur les termes et appuyez sur «Terminer la commande».
Ceci complète l'acquisition du domaine.
Vous pouvez utiliser un autre article que j'ai écrit tel quel, veuillez donc vous référer ici ↓.
Comment installer docker et docker-compose sur une instance AWS EC2 et lancer un service WEB simple
Obtenez une adresse IP statique (adresse IP fixe) et attribuez cette adresse IP à l'instance EC2 lancée ci-dessus. En faisant cela, l'adresse IP ne changera pas même si EC2 est redémarré.
Tout d'abord, utilisez l'écran pour obtenir une adresse IP statique. Appuyez sur "Elastic IP" et Cliquez sur "Attribuer une adresse IP élastique" sur l'écran suivant. Cliquez sur "Attribuer" sur l'écran suivant. J'ai une adresse IP statique.
Sélectionnez l'adresse IP attribuée et appuyez sur «Associer une adresse IP élastique» dans «Action». Pour l'instance, saisissez l'ID d'instance EC2 que vous avez créé précédemment. Après avoir entré, cliquez sur «Associer».
L'association entre l'instance EC2 et l'adresse IP statique est terminée.
Définissez le DNS pour pouvoir vous connecter avec le nom de domaine. Suivez la procédure de création d'une zone hôte → enregistrement d'un enregistrement A → configuration du serveur de noms avec Freenom.
Accédez à l'écran Route53 et Cliquez sur "Zone hôte". Cliquez sur "Créer une zone hôte". Entrez le domaine obtenu par Freenom et cliquez sur "Créer une zone hôte". La création de la zone hôte est terminée.
Cliquez sur "Créer un enregistrement". Confirmez que le routage simple est sélectionné par défaut et cliquez sur "Suivant". Cliquez sur "Définir un enregistrement simple". Après avoir sélectionné "Adresse IP selon le type d'enregistrement ou une autre valeur" dans la destination de routage valeur / trafic, entrez l'adresse IP statique obtenue précédemment et appuyez sur "Définir un enregistrement simple". Cliquez sur Créer un enregistrement. La création de l'enregistrement est terminée.
Maintenant, définissez le serveur de noms dans Freenom.
Appuyez sur "Mes domaines" puis "Gérer le domaine" sur l'écran suivant.
Cliquez sur "Serveurs de noms" dans "Outils de gestion". Sélectionnez «Utiliser des serveurs de noms personnalisés (entrez ci-dessous)» et copiez la valeur de l'enregistrement NS de la zone hôte Route53 dans le champ Serveur de noms. Après avoir entré, appuyez sur "Modifier les serveurs de noms".
Après quelques minutes à ce stade, je pense que DNS a pénétré et le site s'affiche avec "http: // nom de domaine".
5 et 6 se font en même temps. Je pense qu'il existe différentes façons de le faire, mais je vais essayer d'utiliser docker avec la configuration suivante.
--reverse: publie le conteneur ploxy sur Internet et accepte la communication https.
Pour éviter les dysfonctionnements, il est judicieux d'arrêter tous les conteneurs Docker et de supprimer tous les objets Docker avant de commencer le travail.
docker stop $(docker ps -q)
docker system prune -a
Créez un répertoire Web sous le répertoire de base et créez les fichiers de configuration nécessaires.
cd
mkdir web
La structure sous le répertoire et le contenu des fichiers sont les suivants.
Structure du répertoire
web
- html
- index.html #Écrivez-le comme hoge
- docker-compose.yml
docker-compose.yml
version: '3'
services:
web:
image: nginx:latest
container_name: web
volumes:
- ./html:/usr/share/nginx/html
Après l'avoir créé, démarrez le conteneur Docker.
docker-compose up -d --build
Confirmez qu'il a démarré.
docker-compose ps
Name Command State Ports
------------------------------------------------------
web /docker-entrypoint.sh ngin ... Up 80/tcp
Créez un répertoire reverse-ploxy sous le répertoire de base et créez les fichiers de configuration requis.
cd
mkdir reverse-ploxy
En raison de difficultés, le contenu des fichiers et sous le répertoire a été configuré comme suit.
Structure du répertoire
reverse-proxy
- reverse-proxy
- default.conf
- Dockerfile
- entrypoint.sh
- docker-compose.yml
default.conf
server{
server_name y-do.tk;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://web/;
}
}
Dockerfile
FROM nginx
COPY default.conf /etc/nginx/conf.d/default.conf
RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN apt-get update && apt-get install -y \
wget cron && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /usr/local/bin/wait-for-it.sh
RUN chmod +x /usr/local/bin/wait-for-it.sh
ADD https://dl.eff.org/certbot-auto /usr/local/bin/certbot-auto
RUN chmod a+x /usr/local/bin/certbot-auto
RUN certbot-auto --os-packages-only -n
COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
entrypoint.sh
#!/bin/bash
# [email protected] est une adresse e-mail
certbot-auto --nginx -d y-do.tk -m [email protected] --agree-tos -n
certbot-auto renew
# cron job settings
# Let's Encrypt automatic Renew
echo '0 8 * * * certbot-auto renew --post-hook "nginx -s reload"' >> /cron-tmpfile
crontab /cron-tmpfile
rm /cron-tmpfile
# cron start
/etc/init.d/cron start
/bin/bash
docker-compose.yml
version: '3'
services:
reverse-proxy:
build: ./reverse-proxy
tty: true
container_name: reverse-proxy
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
ports:
- "80:80"
- "443:443"
volumes:
- '/srv/letsencrypt:/etc/letsencrypt'
command: ["wait-for-it.sh", "web:80"]
networks:
- default
- web_default
networks:
web_default:
external: true
Après l'avoir créé, démarrez le conteneur Docker.
docker-compose up -d --build
Confirmez qu'il a démarré.
docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------
reverse-proxy entrypoint.sh wait-for-it. ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
Comme il est lu par FW, la communication https ne peut pas encore être acceptée à partir d'Internet. Modifiez les règles entrantes du groupe de sécurité AWS.
Ajoutez une règle et entrez le type "HTTPS" et la source "0.0.0.0/0". Après avoir entré, cliquez sur "Enregistrer la règle".
À ce stade, vous devriez enfin pouvoir communiquer via https. J'essaierai d'y accéder.
J'ai pu y accéder! !! !!
Vous pouvez exploiter un site SSL avec votre propre domaine pour 0,5 USD par mois. Cependant, le domaine expire dans 12 mois et le certificat SSL expire dans 3 mois (je ne peux pas me plaindre car il est gratuit), donc j'aimerais introduire un mécanisme de renouvellement automatique à l'avenir.
Recommended Posts