2017-07-24 4 views
0

Derzeit möchte ich einen Server einrichten, der ein Docker WordPress und Nginx, die als Proxy im Vordergrund hat, hat. Ich möchte in Zukunft in der Lage sein, mehrere WordPress, NodeJS, ROR usw. hinter diesem Nginx-Proxy zu haben.Problem mit der Einrichtung von Nginx mit mehreren Docker-Containern

Wann immer ich versuche, eine Verbindung zu meinem Server auf Port 80 herzustellen, bekomme ich eine 403 verboten.

Ich bin in der Lage, ein Docker WordPress-Bild zu bauen und kann an Port 8080 auf einem Remote-PC verbinden. Hier

ist die compose.yml für meine Docker Wordpress:

version: "3.1" 
services: 

    my_wordpress: 
    image: wordpress 
    ports: 
     - 8080:80 
    environment: 
     WORDPRESS_DB_PASSWORD: password 
     WORDPRESS_DB_HOST: my_mysql_wordpress 

    my_mysql_wordpress: 
    image: mysql:5.7 
    environment: 
     MYSQL_ROOT_PASSWORD: password 

Dies ist der Teil, wenn ich versuche, einen Nginx Container zu bauen Ich erhalte einen 403 verboten.

Nginx DockerFile:

FROM nginx 
COPY nginx.conf /etc/nginx/nginx.conf 

Nginx compose.yml:

version: "2" 
services: 

    web: 
    restart: always 
    image: nginx 
    ports: 
     - "80:80" 
    volumes: 
     - /path/in/vm/www:/usr/share/nginx/html 
    external_links: 
     - mywordpress_wordpress_1:mywordpress 

networks: 
    default: 
    external: 
     name: mywordpress_default 

Nginx nginx.conf:

http { 

#... 

upstream wordpress { 
    server mywordpress:8080; 
} 

#... 

server { 
    listen 80; 

    server_name 192.168.1.124 test.me; 

    location/{ 
     proxy_pass http://wordpress/; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 
} 

für mich Nun scheint es, dass dies höchstwahrscheinlich muss Mach das mit meiner nginx.conf, da ich immer noch in der Lage bin, eine Verbindung zu meiner WordPress-Seite auf Port 8080 herzustellen. Wie ich schon sagte, bin ich auch ein Ich kann keine Verbindung zu meinem Nginx-Proxy herstellen, und beim Start werden keine Fehler angezeigt.

Ist das, was ich versuche, sogar möglich, oder muss ich die Nginx-Anwendung auf dem Betriebssystem und nicht in einem Andock-Container sitzen haben?

+0

Es gibt Lese-to-use nginx Reverse-Proxy-Container Auto Behälter wie https Erkennung: //hub.docker. com/r/jwilder/nginx-proxy / – Grimmy

Antwort

0

Wenn ich recht habe, möchten Sie mehrere WordPress-Docker-Images ausführen und nginx verwenden, um den Proxy zu den Wordpress-Instanzen umzukehren. In diesem Anwendungsfall sollte sich das nginx auf Ihrem Betriebssystem befinden und nicht in einem Docker-Image. Auf diese Weise kann das nginx Proxy an Ports in Ihrem Betriebssystem senden, die an die WordPress-Container gebunden sind.

1

Sie setzen Nginx und Wordpress in 2 verschiedenen Compose-Dateien. Wenn Sie dann auf denselben Maschinen laufen dann

external_links: 
    - mywordpress_wordpress_1:mywordpress 

Above würde nicht funktionieren, wenn Sie auf verschiedenen Maschinen sind. Stellen Sie außerdem sicher, dass der externe Link den korrekten Namen verwendet, indem Sie docker ps überprüfen.

Überprüfen Sie auch die Protokolle Ihres Nginx-Containers, um festzustellen, ob ein Fehler angezeigt wird. Weil das Fehlerprotokoll einen Zeiger darauf gibt, warum eine 403 ausgelöst wird, und es könnte sein, dass der proxy_pass aufgrund der Art und Weise, wie Sie ihn konfiguriert haben, keine Verbindung zu Ihrem Wordpress-Server herstellen kann.

Wenn Sie diese compose Dateien auf verschiedenen Rechnern laufen dann statt external_links Verwendung extra_hosts

extra_hosts: 
    - "mywordpress:<IP of the wordpress machine>" 
Verwandte Themen