Puncte:0

Proxy un site web de la Docker prin Nginx fără a acționa ca localhost

drapel co

Cum pot proxy un site web de la Docker prin Nginx fără ca acesta să acționeze ca gazdă locală?

Configurația mea actuală constă într-o gazdă Ubuntu cu câteva containere Docker cu porturi expuse.Containerele Docker sunt expuse doar local. Expunerea pe Internet constă într-un server Nginx care trimite containerele Docker către anumite subdomenii.

Într-un container Docker rulez Wordpress. L-am scos din Docker Hub folosind acest fișier YML:

versiunea: „3.1”

Servicii:

  wordpress:
    container_name: myapp-cms
    imagine: wordpress
    reporniți: întotdeauna
    porturi:
      - 8087:80
    mediu inconjurator:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exemplu de utilizator
      WORDPRESS_DB_PASSWORD: exemplu de trecere
      WORDPRESS_DB_NAME: exampledb
    volume:
      - /srv/wordpress/cms:/var/www/html

  db:
    container_name: myapp-db
    imagine: mysql:5.7
    reporniți: întotdeauna
    mediu inconjurator:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exemplu de utilizator
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: „1”
    volume:
      - /srv/wordpress/db:/var/lib/mysql

Acest container Docker se expune la portul intern 8087 la care apoi îl fac proxy mysubdomain.mydomain.com. Acesta este fișierul de configurare Nginx:

Server {
        root /var/www/mysubdomain.mydomain.com;
        index index.html index.htm index.nginx-debian.html;

        nume_server mysubdomain.mydomain.com;

        client_max_body_size 1000M;

        Locație / {
                # try_files $uri $uri/ =404;
                proxy_pass http://localhost:8087;
        }

    asculta 443 ssl; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/mydomain.com-0003/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0003/privkey.pem; # gestionat de Certbot
    includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot
}
Server {
    dacă ($gazdă = subdomeniul meu.domeniul meu.com) {
        returnează 301 https://$host$request_uri;
    } # gestionat de Certbot


        asculta 80;

        nume_server mysubdomain.mydomain.com;
    întoarce 404; # gestionat de Certbot
}

Problema este că pagina (în acest caz Wordpress) încă mai folosește localhost:8087 pentru fiecare link. Acest lucru distruge orice posibilitate de a face clic pe ceva și, de asemenea, distruge încărcările bibliotecii CSS și JavaScript.

introduceți descrierea imaginii aici

EDITARE 1:

Am adăugat următoarele două rânduri la wp-config.php:

define('WP_HOME','https://mysubdomain.mydomain.com');
define('WP_SITEURL','https://mysubdomain.mydomain.com');

Încarcă corect pagina de configurare și adaptează și numele domeniului. Pot configura WordPress cu succes, dar de îndată ce salvez configurația (nume de utilizator, parolă, e-mail), browserul încarcă apoi o pagină goală. Apel curl -X GET https://mysubdomain.mydomain.com returnează un răspuns gol.

Puncte:1
drapel cg

Încercați să setați Adresa site-ului și Adresa WordPress .

  1. Mergi la Setări >> General
  2. Setați adresa WordPress (URL) și adresa site-ului folosind fqdn-ul dvs

introduceți descrierea imaginii aici

Referinţă

Pentru mai multe informatii oficiale: WordPress Doc

Socrates avatar
drapel co
Multumesc pentru informatie. Pot încărca doar pagina inițială, dar fiecare link din ea duce la `http://localhost:8087/...`, ceea ce înseamnă că autentificarea nu este posibilă. Apoi am configurat un Docker WordPress local pe laptopul meu, apoi am setat adresa WordPress și adresa site-ului la `https://mysubdomain.mydomain.com`, apoi am copiat baza de date locală și conținutul CMS pe cel de la distanță al serverului web. . Chiar dacă din punct de vedere tehnic ar trebui să se pronunțe, tot nu o face din anumite motive. Pagina nu se încarcă deloc și `curl -X GET https://mysubdomain.mydomain.com` are ca rezultat niciun răspuns.
Socrates avatar
drapel co
Am adăugat **EDIT 1** la postarea mea inițială cu o configurație care funcționează oarecum pentru început, dar nu reușește mai târziu (descris mai sus).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.