Wenn Sie eine für Unternehmen verwendete Technologie oder eine neue Technologie ausprobieren möchten, richten Sie einen Webserver in AWS ein, bereiten Sie eine API oder Testseite vor, stellen Sie über ein lokales Chrome- oder Android-Terminal eine Verbindung zu http her, und machen Sie es ganz gut. .. Dies ist in Ordnung, um die Kommunikation von RestAPI zu überprüfen. Wenn Sie es jedoch für die WebRTC- oder WebSocket-Überprüfung verwenden möchten, gab es ein Problem, bei dem Sie den Vorgang nicht überprüfen konnten, da ein Fehler auftreten würde, wenn die Site nicht SSL-fähig wäre. Nachdem untersucht worden war, ob es möglich wäre, einen Webserver einzurichten, der billig ist und kein Oleore-Zertifikat, stellte sich heraus, dass es bei Verwendung von Freenom und Let's Encrypt möglich wäre, einen https-Server mit einer eigenen Domain fast kostenlos einzurichten.
Wenn Sie nach der Domain-Erfassungsmethode mit Freenom, der SSL-Zertifikatserfassungsmethode mit Let's Encrypt, der Methode zum Festlegen mit AWS usw. suchen, gibt es Fragmente, aber da es keinen vollständigen Artikel gab, werde ich sie hier als Memorandum belassen. Behalte es.
--AWS EC2-Instanzen verwenden die kostenlose Schicht
Ich werde es sofort tun. Domains werden über einen Dienst namens Freenom abgerufen. Freenom ist ein Überseedienst, mit dem Sie kostenlos eine Domain erwerben können. Sie können XXXX.tk, XXXX.ml, XXXX.ga usw. kostenlos als Domainnamen erhalten. https://www.freenom.com/ja/index.html
Sie können die Domain erhalten, die Ihnen gefällt. Geben Sie also die Domain ein, die Sie erhalten möchten. Überprüfen Sie, ob es verfügbar ist, und wenn es verfügbar ist, wird der folgende Bildschirm angezeigt. Klicken Sie auf "Jetzt herunterladen!" Und dann auf "Auschecken".
Es scheint, dass Sie es bis zu 12 Monate lang kostenlos nutzen können. Lassen Sie es uns also maximal nutzen. Wählen Sie im Zeitraum "12 Monate @ KOSTENLOS" und klicken Sie auf "Weiter".
** Stellen Sie sicher, dass der Betrag $ 0.00USD (kostenlos) ist **. Wenn es kein Problem gibt, melden Sie sich zum Kauf an. In meinem Fall habe ich mich bereits registriert, daher melde ich mich normalerweise bei Google an. Wenn Sie sich nicht zum ersten Mal registriert haben, müssen Sie sich möglicherweise auf verschiedene Arten registrieren.
** Bestätigen Sie erneut, dass der Betrag 0,00 USD (kostenlos) beträgt **, überprüfen Sie die Übereinstimmung mit den Bedingungen und klicken Sie auf "Bestellung abschließen".
Damit ist der Erwerb der Domain abgeschlossen.
Sie können einen anderen Artikel verwenden, den ich so geschrieben habe, wie er ist. Bitte lesen Sie hier ↓.
Erhalten Sie eine statische IP-Adresse (feste IP-Adresse) und weisen Sie diese IP-Adresse der oben gestarteten EC2-Instanz zu. Auf diese Weise ändert sich die IP-Adresse auch dann nicht, wenn EC2 neu gestartet wird.
Bedienen Sie zunächst den Bildschirm, um eine statische IP-Adresse zu erhalten. Drücken Sie "Elastic IP" und Klicken Sie im nächsten Bildschirm auf "Elastic IP Address zuweisen". Klicken Sie im nächsten Bildschirm auf "Zuweisen". Ich habe eine statische IP-Adresse.
Wählen Sie die zugewiesene IP-Adresse aus und klicken Sie unter "Aktion" auf "Elastische IP-Adresse zuordnen". Geben Sie für die Instanz die zuvor erstellte EC2-Instanz-ID ein. Klicken Sie nach der Eingabe auf "Verknüpfen".
Die Zuordnung zwischen der EC2-Instanz und der statischen IP-Adresse ist abgeschlossen.
Stellen Sie den DNS so ein, dass Sie eine Verbindung mit dem Domänennamen herstellen können. Befolgen Sie die Anweisungen zum Erstellen einer Hostzone → Registrieren eines A-Datensatzes → Einstellen des Nameservers bei Freenom.
Gehen Sie zum Bildschirm Route53 und Klicken Sie auf "Host Zone". Klicken Sie auf "Hostzone erstellen". Geben Sie die von Freenom erhaltene Domain ein und klicken Sie auf "Hostzone erstellen". Die Erstellung der Hostzone ist abgeschlossen.
Klicken Sie auf "Datensatz erstellen". Stellen Sie sicher, dass standardmäßig einfaches Routing ausgewählt ist, und klicken Sie auf "Weiter". Klicken Sie auf "Einfachen Datensatz definieren". Geben Sie nach Auswahl von "IP-Adresse nach Datensatztyp oder einem anderen Wert" im Ziel "Wert / Verkehrsrouting" die zuvor erhaltene statische IP-Adresse ein und klicken Sie auf "Einfachen Datensatz definieren". Klicken Sie auf Datensatz erstellen. Die Datensatzerstellung ist abgeschlossen.
Stellen Sie nun den Nameserver in Freenom ein.
Drücken Sie im nächsten Bildschirm auf "Meine Domains" und dann auf "Domain verwalten".
Klicken Sie unter "Management Tools" auf "Nameserver". Wählen Sie "Benutzerdefinierte Nameserver verwenden (unten eingeben)" und kopieren Sie den Wert des NS-Datensatzes der Route53-Hostzone in das Feld "Nameserver". Drücken Sie nach der Eingabe auf "Name Server ändern".
Nach einigen Minuten an diesem Punkt denke ich, dass DNS eingedrungen ist und die Site mit "http: // Domain Name" angezeigt wird.
5 und 6 sind sofort erledigt. Ich denke, es gibt verschiedene Möglichkeiten, dies zu tun, aber ich werde versuchen, Docker mit der folgenden Konfiguration zu verwenden.
--reverse-Veröffentlichen Sie den Ploxy-Container im Internet und akzeptieren Sie die https-Kommunikation. --Reverse-Transfer-Kommunikation von Ploxy-Container zu Web-Container, Web-Container akzeptiert http-Kommunikation von Reverse-Ploxy.
Um Fehlfunktionen zu vermeiden, sollten Sie alle Docker-Container stoppen und alle Docker-Objekte löschen, bevor Sie mit der Arbeit beginnen.
docker stop $(docker ps -q)
docker system prune -a
Erstellen Sie ein Webverzeichnis unter dem Ausgangsverzeichnis und erstellen Sie die erforderlichen Konfigurationsdateien.
cd
mkdir web
Die Struktur unter dem Verzeichnis und der Inhalt der Dateien sind wie folgt.
Verzeichnisaufbau
web
- html
- index.html #Schreiben Sie es als hoge
- docker-compose.yml
docker-compose.yml
version: '3'
services:
web:
image: nginx:latest
container_name: web
volumes:
- ./html:/usr/share/nginx/html
Starten Sie nach dem Erstellen den Docker-Container.
docker-compose up -d --build
Bestätigen Sie, dass es gestartet wurde.
docker-compose ps
Name Command State Ports
------------------------------------------------------
web /docker-entrypoint.sh ngin ... Up 80/tcp
Erstellen Sie ein Reverse-Ploxy-Verzeichnis unter dem Home-Verzeichnis und erstellen Sie die erforderlichen Konfigurationsdateien.
cd
mkdir reverse-ploxy
Aufgrund von Problemen wurde der Inhalt der Dateien und des Verzeichnisses wie folgt konfiguriert.
Verzeichnisaufbau
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] ist eine E-Mail-Adresse
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
Starten Sie nach dem Erstellen den Docker-Container.
docker-compose up -d --build
Bestätigen Sie, dass es gestartet wurde.
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
Da es von FW gespielt wird, kann die https-Kommunikation noch nicht aus dem Internet akzeptiert werden. Ändern Sie die eingehenden Regeln für AWS-Sicherheitsgruppen.
Fügen Sie eine Regel hinzu und geben Sie den Typ "HTTPS" und die Quelle "0.0.0.0/0" ein. Klicken Sie nach der Eingabe auf "Regel speichern".
Zu diesem Zeitpunkt sollten Sie endlich in der Lage sein, über https zu kommunizieren. Ich werde versuchen, darauf zuzugreifen.
Ich konnte darauf zugreifen! !! !!
Sie können eine SSL-Site mit Ihrer eigenen Domain für 0,5 USD pro Monat betreiben. Die Domain läuft jedoch in 12 Monaten ab und das SSL-Zertifikat läuft in 3 Monaten ab (ich kann mich nicht beschweren, da es kostenlos ist). Daher möchte ich in Zukunft einen automatischen Verlängerungsmechanismus einführen.
Recommended Posts