Puncte:0

Proxy-ul invers Nginx încarcă site-uri diferite atunci când se reîmprospătează

drapel fi

Vreau să găzduiesc mai multe site-uri web într-un singur server cu reverse proxy nginx, urmând acest tutorial https://www.datanovia.com/en/lessons/how-host-multiple-https-websites-on-one-server/

Proxy-ul Nginx și fiecare site web sunt lansate separat cu Docker. Dar de fiecare dată când reîncarc unul dintre site-uri, acesta încarcă conținutul altui site. De exemplu:

  • Încărcați websiteone.tk pentru prima dată, a încărcat conținutul site-ului ONE.

  • Actualizează websiteone.tk , a încărcat conținutul site-ului TWO

  • Actualizează din nou websiteone.tk, a încărcat conținutul site-ului THREE

  • Încărcați websitetwo.tk prima dată, site-ul încărcat DOUA conținut

  • Actualizează websitetwo.tk , site-ul încărcat THREE conținut.

Sunt un începător atât pentru nginx, cât și pentru docker. Nu pot spune dacă problema se întâmplă în nginx sau docker.Poate cineva va rog frumos să sfătuiască? Mulțumesc foarte mult.

Nginx-proxy default.conf este

harta $http_x_forwarded_proto $proxy_x_forwarded_proto { implicit $http_x_forwarded_proto;
  '' $schema;
}
harta $http_x_forwarded_port $proxy_x_forwarded_port {
  implicit $http_x_forwarded_port;
  '' $server_port;
}
harta $http_upgrade $proxy_connection {
  upgrade implicit;
  '' închide;
}
server_names_hash_bucket_size 128;
harta $proxy_x_forwarded_proto $proxy_x_forwarded_ssl {
  implicit dezactivat;
  https activat;
}
gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss t>log_format vhost „$host $remote_addr - $remote_user [$time_local] '
                 '"$request" $status $body_bytes_sent '
                 '"$http_referer" "$http_user_agent" '
                 '"$adresă_amonte"';
access_log off;
                ssl_protocols TLSv1.2 TLSv1.3;
                ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA256-GCM-SHA256-prefer _sserver_SHA384_ssl_ciphers;
error_log /dev/stderr;
# Suport HTTP 1.1
proxy_http_versiunea 1.1;
proxy_buffering dezactivat;
proxy_set_header Gazdă $http_host;
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Conexiune $proxy_connection;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
proxy_set_header X-Original-URI $request_uri;
# Atenuați atacul httpoxy (consultați README pentru detalii)
proxy_set_header Proxy „”;
Server {
        numele serverului _; # Aceasta este doar o valoare nevalidă care nu se va declanșa niciodată pe un nume de gazdă real.
        server_tokens dezactivat;
        asculta 80;
        access_log /var/log/nginx/access.log vhost;
        întoarce 503;
}
Server {
        numele serverului _; # Aceasta este doar o valoare nevalidă care nu se va declanșa niciodată pe un nume de gazdă real.
        server_tokens dezactivat;
        asculta 443 ssl http2;
        access_log /var/log/nginx/access.log vhost;
        întoarce 503;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/default.crt;
        ssl_certificate_key /etc/nginx/certs/default.key;
}


# websiteone.tk
amonte websiteone.tk {
## Poate fi conectat la rețeaua „nginx-proxy”.
# websiteonetk_my-app_1
server 192.168.32.8:80;
}

Server {
        nume_server websiteone.tk;
        asculta 80 ;
        access_log /var/log/nginx/access.log vhost;
        # Nu redirecționați HTTPS provocarea Let'sEncrypt ACME
        locație ^~ /.well-known/acme-challenge/ {
                auth_basic off;
                auth_request dezactivat;
                permite tuturor;
                root /usr/share/nginx/html;
                try_files $uri =404;
                pauză;
                      }
        Locație / {
                returnează 301 https://$host$request_uri;
        }
}
Server {
        nume_server websiteone.tk;
        asculta 443 ssl http2 ;
        access_log /var/log/nginx/access.log vhost;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/websiteone.tk.crt;
        ssl_certificate_key /etc/nginx/certs/websiteone.tk.key;
        ssl_dhparam /etc/nginx/certs/websiteone.tk.dhparam.pem;
        ssl_capsare activată;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/certs/websiteone.tk.chain.pem;
        add_header Strict-Transport-Security "max-age=31536000" întotdeauna;
        includ /etc/nginx/vhost.d/default;
        
        Locație / {
                        proxy_pass http://websiteone.tk;
        }
}


# websitetwo.tk
site-ul în amontetwo.tk {
## Poate fi conectat la rețeaua „nginx-proxy”.
# websitetwotk_my-app_1
server 192.168.32.13:80;
}

Server {
        nume_server websitetwo.tk;
        asculta 80 ;
        access_log /var/log/nginx/access.log vhost;
        # Nu redirecționați HTTPS provocarea Let'sEncrypt ACME
        locație ^~ /.well-known/acme-challenge/ {
                auth_basic off;
                auth_request dezactivat;
                permite tuturor;
                root /usr/share/nginx/html;
                try_files $uri =404;
                pauză;
        }
        Locație / {
                returnează 301 https://$host$request_uri;
        }
}
Server {
        nume_server websitetwo.tk;
        asculta 443 ssl http2 ;
        access_log /var/log/nginx/access.log vhost;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/websitetwo.tk.crt;
        ssl_certificate_key /etc/nginx/certs/websitetwo.tk.key;
        ssl_dhparam /etc/nginx/certs/websitetwo.tk.dhparam.pem;
        ssl_capsare activată;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/certs/websitetwo.tk.chain.pem;
        add_header Strict-Transport-Security "max-age=31536000" întotdeauna;
        includ /etc/nginx/vhost.d/default;
        
        Locație / {
                        proxy_pass http://websitetwo.tk;
        }
}

# websitethree.tk
amonte websitethree.tk {
## Poate fi conectat la rețeaua „nginx-proxy”.
# websitethreetk_my-app_1
server 192.168.32.3:80;
}
Server {
        nume_server websitethree.tk;
        asculta 80 ;
        access_log /var/log/nginx/access.log vhost;
        # Nu redirecționați HTTPS provocarea Let'sEncrypt ACME
        locație ^~ /.well-known/acme-challenge/ {
                auth_basic off;
                auth_request dezactivat;
                permite tuturor;
                root /usr/share/nginx/html;
                try_files $uri =404;
                pauză;
        }
        Locație / {
                returnează 301 https://$host$request_uri;
        }
}

Server {
        nume_server websitethree.tk;
        asculta 443 ssl http2 ;
        access_log /var/log/nginx/access.log vhost;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/websitethree.tk.crt;
        ssl_certificate_key /etc/nginx/certs/websitethree.tk.key;
        ssl_dhparam /etc/nginx/certs/websitethree.tk.dhparam.pem;
        ssl_capsare activată;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/certs/websitethree.tk.chain.pem;
        add_header Strict-Transport-Security "max-age=31536000" întotdeauna;
        includ /etc/nginx/vhost.d/default;
        Locație / {
                        proxy_pass http://websitethree.tk;
        }
}

Docker-compose pentru proxy-ul nginx este

versiunea: „3.6”
Servicii:
  nginx:
    imagine: nginx
    etichete:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: „adevărat”
    container_name: nginx
    reporniți: dacă nu este oprit
    porturi:
      - „80:80”
      - „443:443”
    volume:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:ro

  nginx-gen:
    imagine: jwilder/docker-gen
    comandă: -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
    container_name: nginx-gen
    reporniți: dacă nu este oprit
    volume:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro

  nginx-letsencrypt:
    imagine: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nginx-letsencrypt
    reporniți: dacă nu este oprit
    volume:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    mediu inconjurator:
      NGINX_DOCKER_GEN_CONTAINER: „nginx-gen”
      NGINX_PROXY_CONTAINER: „nginx”
retele:
  Mod implicit:
    extern:
      nume: nginx-proxy

Nginx default.conf pentru unul dintre site-uri este

Server {
    root /application2;
    index index.php;

    locație ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE „error_log=/var/log/nginx/application_php_errors.log”;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        include fastcgi_params;
    }
}

Docker-compose/yml pentru unul dintre site-uri este mai jos.

Websiteone director de lucru este /application1. Directorul de lucru Websitetwo este /application2. etc

versiunea: „3.1”
Servicii:
    aplicația mea:
        imagine: „nginx:alpine”
        volume:
            - '.:/application2'
            - „./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf”
        reporniți: întotdeauna
        mediu inconjurator:
            - VIRTUAL_HOST=websitetwo.tk
            - VIRTUAL_PORT=80
            - LETSENCRYPT_HOST=websitetwo.tk
        expune:
            - 80
    mailhog:
        imagine: „mailhog/mailhog:latest”
        porturi:
            - „21001:8025”

    php-fpm:
        build: phpdocker/php-fpm
        work_dir: /application2
        volume:
            - '.:/application2'
            - „./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini”
retele:
    Mod implicit:
        extern:
            nume: nginx-proxy

Puncte:1
drapel fi

Am aflat singur răspunsul. În cazul în care cineva întâlnește aceeași situație: Pentru fiecare site web docker-compose.yml, trebuie să se configureze o rețea independentă .

Mai întâi schimb numele rețelei nginx-proxy din „implicit” în „proxy” Apoi, pentru fiecare site web, utilizați o rețea independentă (am numit-o „aplicație”) pentru a conecta fiecare serviciu utilizat în container. Serviciul nginx trebuie să folosească și rețeaua proxy.

site-ul web docker-compose.yml:

versiunea: „3.1”
Servicii:
    aplicația mea:
        retele: 
            - aplicație
            - proxy
        imagine: „nginx:alpine”
        volume:
            - '.:/application2'
            - „./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf”
        reporniți: întotdeauna
        mediu inconjurator:
            - VIRTUAL_HOST=websitetwo.tk
            - VIRTUAL_PORT=80
            - LETSENCRYPT_HOST=websitetwo.tk
        expune:
            - 80
    mailhog:
        retele: 
            - aplicație
        imagine: „mailhog/mailhog:latest”
        porturi:
            - „21001:8025”

    php-fpm:
        retele: 
            - aplicație
        build: phpdocker/php-fpm
        work_dir: /application2
        volume:
            - '.:/application2'
            - „./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini”
retele:
    proxy:
        extern:
            nume: nginx-proxy
    aplicatie:

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.