Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konfiguriere ich den Nginx-Proxyserver und aktiviere SSL mithilfe des Docker-Containers?

Wie konfiguriere ich den Nginx-Proxyserver und aktiviere SSL mithilfe des Docker-Containers?

PHPz
PHPzOriginal
2023-09-05 16:45:471066Durchsuche

Wie konfiguriere ich den Nginx-Proxyserver und aktiviere SSL mithilfe des Docker-Containers?

Wie konfiguriere ich den Nginx-Proxyserver und aktiviere SSL mithilfe des Docker-Containers?

In der heutigen Netzwerkumgebung ist Sicherheit zu einem Problem geworden, das nicht ignoriert werden kann. Um die sichere Übertragung von Daten zu schützen, ist die Aktivierung von SSL-Zertifikaten ein notwendiger Schritt geworden. Die Verwendung von Docker-Containern zur Konfiguration von Nginx-Proxyservern ist zu einem Trend geworden. In diesem Artikel erklären wir, wie Sie Docker-Container verwenden, um den Nginx-Proxyserver zu konfigurieren und SSL zu aktivieren.

Schritt 1: Docker installieren
Zuerst müssen wir Docker installieren. Sie können es installieren, indem Sie je nach Betriebssystem die offizielle Installationsanleitung von Docker lesen.

Schritt 2: Erstellen Sie eine Nginx-Konfigurationsdatei
Bevor wir den Nginx-Proxyserver konfigurieren, müssen wir eine Konfigurationsdatei erstellen, um unsere Proxy-Regeln zu definieren. Erstellen Sie eine Datei mit dem Namen nginx.conf und fügen Sie den folgenden Inhalt ein: nginx.conf的文件,并将以下内容粘贴进去:

worker_processes auto;

events {
  worker_connections 1024;
}

http {
  server {
    listen 80;
    server_name example.com;
    
    location / {
      proxy_pass http://backend;
      proxy_set_header Host $host;
    }
  }
}

上面的配置文件指定了Nginx代理服务器监听80端口,并将所有的请求代理到名为backend的后端服务器。

步骤3:创建Docker镜像
接下来,我们需要创建一个Docker镜像来运行Nginx代理服务器。在命令行中,执行以下命令:

docker build -t nginx-proxy .

该命令将读取当前目录下的Dockerfile文件,并根据其中的指令自动构建一个Docker镜像,命名为nginx-proxy

步骤4:运行Docker容器
在Docker Hub上有一个名为jwilder/nginx-proxy的官方Nginx代理服务器镜像。我们可以使用该镜像来运行一个Nginx代理服务器容器。

在命令行中,执行以下命令:

docker run -d -p 80:80 -p 443:443 -v /var/run/docker.sock:/tmp/docker.sock:ro --name nginx-proxy nginx-proxy

该命令将创建一个名为nginx-proxy的Docker容器,并将主机的80端口映射到容器的80端口,443端口映射到容器的443端口。-v /var/run/docker.sock:/tmp/docker.sock:ro这个选项是为了让Docker容器能够读取主机上的Docker套接字文件。

步骤5:配置SSL证书
为了启用SSL,我们需要为我们的代理服务器配置SSL证书。我们可以使用Let's Encrypt提供的免费SSL证书。

在命令行中,执行以下命令:

docker run -d -p 80:80 -p 443:443 --name nginx-proxy nginx-proxy

该命令将重新创建一个名为nginx-proxy的Docker容器,并将主机的80端口映射到容器的80端口,443端口映射到容器的443端口。

然后,执行以下命令来生成SSL证书:

docker exec nginx-proxy /app/certbot-setup.sh

该脚本将自动安装certbot客户端,并请求Let's Encrypt服务器生成SSL证书。

步骤6:配置代理规则
最后,我们需要配置我们的代理规则。我们可以使用Docker的环境变量来定义我们的代理规则。

在命令行中,执行以下命令:

docker run -d -p 80:80 -p 443:443 -e "VIRTUAL_HOST=example.com" -e "LETSENCRYPT_HOST=example.com" --name backend your-backend

该命令将创建一个名为backend的Docker容器,并将主机的80端口映射到容器的80端口,443端口映射到容器的443端口。-e "VIRTUAL_HOST=example.com" -e "LETSENCRYPT_HOST=example.com"rrreee

Die obige Konfigurationsdatei gibt an, dass der Nginx-Proxyserver Port 80 überwacht und alle Anfragen an den Server mit dem Namen weiterleitet backends Backend-Server.

Schritt 3: Docker-Image erstellen

Als nächstes müssen wir ein Docker-Image erstellen, um den Nginx-Proxyserver auszuführen. Führen Sie in der Befehlszeile den folgenden Befehl aus:

rrreee🎜Dieser Befehl liest die Datei Dockerfile im aktuellen Verzeichnis und erstellt automatisch ein Docker-Image gemäß den darin enthaltenen Anweisungen mit dem Namen nginx- Proxy . 🎜🎜Schritt 4: Führen Sie den Docker-Container aus. 🎜Auf Docker Hub gibt es ein offizielles Nginx-Proxyserver-Image namens jwilder/nginx-proxy. Wir können dieses Image verwenden, um einen Nginx-Proxyserver-Container auszuführen. 🎜🎜Führen Sie in der Befehlszeile den folgenden Befehl aus: 🎜rrreee🎜Dieser Befehl erstellt einen Docker-Container mit dem Namen nginx-proxy und ordnet den 80-Port des Hosts dem 80-Port des Containers und den 443-Port-Port zu 443 des Containers. -v /var/run/docker.sock:/tmp/docker.sock:ro Mit dieser Option wird dem Docker-Container ermöglicht, die Docker-Socket-Datei auf dem Host zu lesen. 🎜🎜Schritt 5: SSL-Zertifikat konfigurieren🎜Um SSL zu aktivieren, müssen wir das SSL-Zertifikat für unseren Proxyserver konfigurieren. Wir können ein kostenloses SSL-Zertifikat von Let's Encrypt verwenden. 🎜🎜Führen Sie in der Befehlszeile den folgenden Befehl aus: 🎜rrreee🎜Dieser Befehl erstellt einen Docker-Container mit dem Namen nginx-proxy neu und ordnet den 80-Port des Hosts dem 80-Port des Containers zu, 443. Der Port wird zugeordnet an Port 443 des Containers. 🎜🎜Führen Sie dann den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren: 🎜rrreee🎜Das Skript installiert automatisch den Certbot-Client und fordert den Let's Encrypt-Server auf, ein SSL-Zertifikat zu generieren. 🎜🎜Schritt 6: Proxy-Regeln konfigurieren🎜Abschließend müssen wir unsere Proxy-Regeln konfigurieren. Wir können die Umgebungsvariablen von Docker verwenden, um unsere Proxy-Regeln zu definieren. 🎜🎜Führen Sie in der Befehlszeile den folgenden Befehl aus: 🎜rrreee🎜Dieser Befehl erstellt einen Docker-Container mit dem Namen backend und ordnet Port 80 des Hosts Port 80 des Containers und Port 443 The 443 zu Hafen des Containers. -e "VIRTUAL_HOST=example.com" -e "LETSENCRYPT_HOST=example.com"Diese beiden Optionen konfigurieren unsere Proxy-Regeln. 🎜🎜Nach Abschluss der oben genannten Schritte kann unser Nginx-Proxyserver sicheres Proxying über SSL durchführen. Sie können weitere Proxy-Regeln anpassen und weitere Container hinzufügen, um Ihren Anforderungen gerecht zu werden. 🎜🎜Ich hoffe, dieser Artikel ist hilfreich für Sie. Wenn Sie Fragen haben, hinterlassen Sie bitte unten einen Kommentar und ich werde versuchen, diese zu beantworten. Danke fürs Lesen! 🎜

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich den Nginx-Proxyserver und aktiviere SSL mithilfe des Docker-Containers?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn