Puncte:1

Cockpit prin NGINX - setările fac ca alte servicii să nu fie accesibile

drapel cn

Am un server (Ubuntu-Server) cu unele servere bazate pe Docker (Gitlab, Redmine) și NGINX ca proxy.

gitlab.<serverul meu> => NGINX -> <docker-net-ip>:port => Gitlab-container  
redmine.<serverul meu> => NGINX -> <docker-net-ip>:port => Redmine-container
                                                         Container SQL  
                                                         Certbot  

Acest lucru funcționează ca un farmec. Acum vreau să-mi extind serverul prin Cockpit Web Service:

cockpit.<serverul meu> => NGINX -> localhost:9090 => Cockpit rulează pe server  
gitlab.<serverul meu> => NGINX -> <docker-net-ip>:port => Gitlab-container  
redmine.<serverul meu> => NGINX -> <docker-net-ip>:port => Redmine-container
                                                         Container SQL  
                                                         Certbot  

Am adăugat o regulă NGINX suplimentară (corespunzătoare cu https://github.com/cockpit-project/cockpit/wiki/Proxying-Cockpit-over-NGINX) pentru cockpit și apoi cockpit sunt disponibile, dar nici Redmine și nici Gitlab.Dacă elimin regula, e invers.

În /etc/nginx/sites-available/ și /etc/nginx/sites-enabled/ sunt stocate următoarele reguli NGINX:

gitlab.<serverul meu>

Server {

    asculta 80;
    asculta [::]:80;

    nume_server gitlab.<serverul meu>;

    Locație / {
        proxy_pass http://<docker-net-ip>:port;
        proxy_buffering dezactivat;
        proxy_set_header X-Real-IP $adresă_la distanță;
    }
}

redmine.<serverul meu>

Server {

    asculta 80;
    asculta [::]:80;

    nume_server redmine.<serverul meu>;

    Locație / {
        proxy_pass http://<docker-net-ip>:port;
        proxy_set_header Gazdă $gazdă;
        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 $schema;
    }
}

si acum am adaugat:
cockpit.<serverul meu>

Server {
    asculta 80;
    asculta 443 ssl;

    server_name cockpit.<serverul meu>;

    Locație / {
        # Necesar pentru a proxy conexiunea la Cockpit
        proxy_pass https://127.0.0.1:9090;
        proxy_set_header Gazdă $gazdă;
        proxy_set_header X-Forwarded-Proto $schema;

        # Necesar pentru ca socket-urile web să funcționeze
        proxy_http_versiunea 1.1;
        proxy_buffering dezactivat;
        proxy_set_header Actualizare $http_upgrade;
        proxy_set_header Conexiune „upgrade”;

        # Transmiteți antetul ETag din Cockpit către clienți.
        # Vezi: https://github.com/cockpit-project/cockpit/issues/5239
        gzip off;
    }
}

și /etc/cockpit/cockpit.conf

[Serviciu web]
Origins = https://cockpit.<serverul meu> 127.0.0.1:9090
ProtocolHeader = X-Forwarded-Proto

[Buturuga]
Fatal = /var/log/cockpit.log

[Sesiune]
IdleTimeout=15

Ce lipsește aici?

Alex44 avatar
drapel cn
deja e rezolvat...
Puncte:1
drapel cn

Ce lipsește aici?

Problema nu apare pe toate dispozitivele. Unii arată asta „Această conexiune nu este sigură”. pentru redmine și gitlab. Dar cabina de pilotaj nu. Soluția la ghicitori este acum că regulile pentru Gitlab și Redmine nu sunt complete și solicitările https devin blocate nicăieri.

Lipsesc regulile pentru portul 443 (https). Acum am schimbat blocurile în două:

  1. Redirecționează solicitarea http către https
  2. ascultați solicitările https și trimiteți-le către aplicație

Acesta arată acum așa:

/etc/nginx/sites-available/gitlab.<serverul meu> legat de /etc/nginx/sites-enabled/gitlab.<serverul meu>

# redirecționează cererea http către https păstrând uri-ul cererii
Server {

    asculta 80;
    asculta [::]:80;

    nume_server gitlab.<serverul meu>;

    returnează 301 https://gitlab.<serverul meu>$request_uri;
}

# Solicitările https vor fi redirecționate către aplicația server
Server {

    asculta 443 ssl;
    asculta [::]:443 ssl;

    nume_server gitlab.<serverul meu>;

    Locație / {
        proxy_pass http://<docker-net-ip>:<port>;
        proxy_buffering dezactivat;
        proxy_set_header X-Real-IP $adresă_la distanță;

        # Notă: ar trebui să dezactivați gzip pentru traficul SSL.
        # Vezi: https://bugs.debian.org/773332
        gzip off;
    }
}

/etc/nginx/sites-available/redmine.<serverul meu> legat de /etc/nginx/sites-enabled/redmine.<serverul meu>

# redirecționează cererea http către https păstrând uri-ul cererii
Server {

    asculta 80;
    asculta [::]:80;

    nume_server redmine.<serverul meu>;

    returnează 301 https://redmine.<serverul meu>$request_uri;
}

# Solicitările https vor fi redirecționate către aplicația server
Server {

    asculta 443 ssl;
    asculta [::]:443 ssl;

    nume_server redmine.<serverul meu>;

    Locație / {
        proxy_pass http://<docker-net-ip>:<port>;
        proxy_set_header Gazdă $gazdă;
        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 $schema;

        # Notă: ar trebui să dezactivați gzip pentru traficul SSL.
        # Vezi: https://bugs.debian.org/773332
        gzip off;
    }
}

/etc/nginx/sites-available/cockpit.<serverul meu> legat de /etc/nginx/sites-enabled/cockpit.<serverul meu>

Server {
    asculta 80;
    asculta 443 ssl;

    server_name cockpit.<serverul meu>;

    Locație / {
        # Necesar pentru a proxy conexiunea la Cockpit
        proxy_pass https://127.0.0.1:9090;
        proxy_set_header Gazdă $gazdă;
        proxy_set_header X-Forwarded-Proto $schema;

        # Necesar pentru ca socket-urile web să funcționeze
        proxy_http_versiunea 1.1;
        proxy_buffering dezactivat;
        proxy_set_header Actualizare $http_upgrade;
        proxy_set_header Conexiune „upgrade”;

        # Transmiteți antetul ETag din Cockpit către clienți.
        # Vezi: https://github.com/cockpit-project/cockpit/issues/5239
        gzip off;
    }
}

și /etc/cockpit/cockpit.conf

[Serviciu web]
Origins = https://cockpit.<serverul meu> 127.0.0.1:9090
ProtocolHeader = X-Forwarded-Proto

[Buturuga]
Fatal = /var/log/cockpit.log

[Sesiune]
IdleTimeout=15

si pentru a fi complet:
/etc/nginx/sites-available/default legat de /etc/nginx/sites-enabled/default

##
# Ar trebui să vă uitați la următoarele adrese URL pentru a înțelege o înțelegere solidă
# de fișiere de configurare Nginx pentru a elibera pe deplin puterea lui Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# În majoritatea cazurilor, administratorii vor elimina acest fișier de pe site-uri activate/ și
# lăsați-l ca referință în interiorul site-urilor-disponibil acolo unde va continua să fie
# actualizat de echipa de ambalare nginx.
#
# Acest fișier va încărca automat fișierele de configurare furnizate de alții
# aplicații, cum ar fi Drupal sau WordPress. Aceste cereri se vor face
# disponibil sub o cale cu acel nume de pachet, cum ar fi /drupal8.
#
# Consultați /usr/share/doc/nginx-doc/examples/ pentru exemple mai detaliate.
##

# Configurația implicită a serverului
#
Server {
    asculta 80 default_server;
    asculta [::]:80 default_server;

    # Configurare SSL
    #
    # asculta 443 ssl default_server;
    # asculta [::]:443 ssl default_server;
    #
    # Notă: ar trebui să dezactivați gzip pentru traficul SSL.
    # Vezi: https://bugs.debian.org/773332
    #
    # Citiți informații despre ssl_ciphers pentru a asigura o configurație sigură.
    # Vezi: https://bugs.debian.org/765782
    #
    # Certificate autosemnate generate de pachetul ssl-cert
    # Nu le folosiți pe un server de producție!
    #
    # include snippets/snakeoil.conf;

    rădăcină /var/www/html;

    error_log /opt/logs/certbot_error debug;
}

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.