Toon posts:

nginx & docker troubleshooting

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Voor een klant ben ik bezig met een voorstel, waar een migratie van oude content bij hoort (zie verderop), dit is een website met custom CMS, geserveerd door nginx en de database middels MySQL neem ik aan. Echter heb ik weinig tot geen ervaring met de techniek die momenteel gebruikt wordt, dockers namelijk.

Het gaat om een 8-tal flinke blogs, die allemaal op 1 VPS staan waar ik root access op heb. Op deze server draait nginx, maar de standaard webroot zoals vermeld in /etc/nginx/nginx.conf is leeg. Via deze nginx.conf ben ik erachter gekomen dat er voor elke website een aparte set directives wordt gebruikt, binnen Apache zou ik dit VirtualHost noemen.

Echter staat er hier voor elke website een "proxy_pass http://localhost:8080" directive. Ik ben er dus achter dat deze websites binnen een docker staan. Dit is allemaal geheel nieuw voor mij, ik heb wel enige ervaring met linux command prompts e.d.

Ik ben erachter dat er 1 docker draait, de output van "docker ps"

code:
1
2
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
XXXX        elasticsearch:6.8.1   "/usr/local/bin/do..."   6 months ago        Up 29 minutes       0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   XXXX

Enkele dingen gemaskeerd aangezien ik niet weet in hoeverre dit mijn klant blootgeeft. Zoals je kunt zien aan de uptime ben ik er al in geslaagd om de docker om zeep te helpen door ermee te attachen en op Ctrl-C te drukken. :') Goed voor een lichte paniekaanval maar hij was gelukkig weer vrij snel online door "docker start XXXX". Ik zit wel in de juiste richting want de sites waren direct offline. 8)7

Wat begrijp ik hieruit?
Volgens mij is een docker dus een soort virtualisatie, maar net niet? Kan iemand mij dit uitleggen? Ik ben echt niet bekend met deze techniek, dus vergeef me deze n00b-omschrijving. Ik ben er in ieder geval achter dat ik de webroot niet op het normale filesystem kan vinden. Basisdingen zoals een VPS inrichten met Apache, de boel compilen enzo, kan ik wel, om een idee te geven van wat ik wél snap.

Wat wil ik bereiken?
Om even terug te komen op hetgeen waar ik deze post mee heb geopend, er draaien dus een aantal sites op met een heleboel artikelen. Ik wil dus enkel voor elke website in de webroot kunnen komen, hier de MySQL user/pass uit vissen, en vervolgens een SQL export maken. Dit zal command-line wel lukken. Deze SQL export zal ik zelf gebruiken om middels een nog te ontwikkelen script de artikelen te "converteren" naar het CMS wat ik voor de klant voor ogen heb, maar dat is de issue niet.

Wil dus gewoon de webroot vinden. :P Klinkt heel stom, is het waarschijnlijk ook, maar ik mis kennelijk iets en het lukt me helaas niet.

TL;DR:
Nginx server met docker, moet webroot vinden en daarmee een SQL export draaien.

Heb al verscheidene How-To's gelezen van het opzetten van nginx met voorgenoemde dockers, maar ik heb eerlijk gezegd de materie me niet echt eigen weten te maken.

Heeft iemand tips? Deze zijn enorm welkom.

Alvast bedankt!

Alle reacties


Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Nginx is in deze een reverse proxy. Die docker die jij laat zien luistert niet op poort 8080 (en is ElasticSearch), dus dat moet een ander proces zijn. Kijk eens met "ss -l4pn" wat er allemaal draait.

Wat MySQL betreft; waarom reset je niet gewoon het root-wachtwoord? Dan heb je die andere logins niet nodig. ;)

[ Voor 3% gewijzigd door Room42 op 21-01-2020 01:12 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • +1 Henk 'm!

  • Shamalamadindon
  • Registratie: Juni 2009
  • Laatst online: 30-03-2024
Ik denk dat je docker even helemaal opzij moet zetten aangezien daar zo te zien enkel elasticsearch op draait.

Zijn de daadwerkelijke proxy_pass'es echt localhost of een IP van een andere server?

Wanneer heb je het laatst je wachtwoord verandert? Er word op T.net de laatste tijd regelmatig misbruikt gemaakt van accounts met gelekte wachtwoorden om andere gebruikers op te lichten. Verander je wachtwoord, geef oplichters geen kans!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Allereerst bedankt voor de snelle antwoorden.
Room42 schreef op dinsdag 21 januari 2020 @ 01:11:
Nginx is in deze een reverse proxy. Die docker die jij laat zien luistert niet op poort 8080 (en is ElasticSearch), dus dat moet een ander proces zijn. Kijk eens met "ss -l4pn" wat er allemaal draait.

Wat MySQL betreft; waarom reset je niet gewoon het root-wachtwoord? Dan heb je die andere logins niet nodig. ;)
Het poortnummer viel mij ook al op, daarom probeerde ik te attachen met "docker attach image-name", toen was ik attached maar ik zag niks. Ik drukte dus op Ctrl-C en toen kwam er een soort shutdown-proces. Hierna waren alle websites wel offline. Heb ik dan gelijk om te denken dat de websites hier toch op draaien, of is het een soort ondersteunend proces?

Met "docker start image-name" heb ik de boel weer online gekregen.

(knap he :') )
Shamalamadindon schreef op dinsdag 21 januari 2020 @ 01:17:
Ik denk dat je docker even helemaal opzij moet zetten aangezien daar zo te zien enkel elasticsearch op draait.

Zijn de daadwerkelijke proxy_pass'es echt localhost of een IP van een andere server?
Het is echt localhost:8080, exact zoals ik postte.

Naast een standaard server{} directive in het begin, waar root refereert aan /usr/share/nginx/html (waar enkel de standaard "This is the default index.html" pagina staat, zijn er enkel de volgende sub-directives (zeg ik dat goed? vast niet):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
        listen 443 ssl;
        server_name WEBSITEURL.nl www.WEBSITEURL.nl;
        ssl on;
        ssl_certificate /etc/nginx/ssl/WEBSITEURL/WEBSITEURL.nl.crt;
        ssl_certificate_key /etc/nginx/ssl/WEBSITEURL/WEBSITEURL.nl.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

   location / {
    proxy_pass http://localhost:8080;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto https;
    proxy_redirect off;
    proxy_http_version 1.1;
   }
}


Afgezien van "WEBSITEURL", is alles exact zoals ik heb gepaste. Ik neem aan dat jullie begrijpen dat ik de website liever niet prijsgeef aangezien ik bezig ben met een voorstel. Uiteraard zal ik zelf de nieuwe server anders inrichten met technieken die ik wel begrijp.

Voel me echt een n00b, vroeger waren dit kunstjes waar ik m'n hand niet voor omdraaide. Loop kennelijk enorm achter dus alle tips en tricks zijn welkom heren (en dames).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dacht overigens dat "docker attache image-name" net zoiets als "screen" was, maar toen ik uit een automatisme van lang geleden op Ctrl-C drukte kwam ik erachter dat ik daarmee de hele container(?) of docker om zeep hielp. Die draait gelukkig weer, maar ik wil gewoon achter die verdomde webroot komen, dan kom ik er vanzelf wel achter.

Eenmaal dat gevonden, zal het een koud kunstje zijn om de MySQL username/pass te vinden die waarschijnlijk gewoon in een config file staat ala "wp-config.php" in WordPress.

Heb een vermoeden dat dit één van dat soort dingen is waarbij je uiteindelijk zegt "was dat het?".

Vooralsnog voel ik me vrij n00b. :P

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 28-09 21:59

Hero of Time

Moderator LNX

There is only one Legend

Als je weet waar de database draait, kan je daar als systeem root gebruiker vaak zonder wachtwoord in met, jawel, de root gebruiker van mysql.

Wat er met die docker zal zijn, is waarschijnlijk dat er een lokaal filesystem aan gekoppeld is. Want wat ik met mijn beperkte kennis van docker begrijp is dat het interne filesystem vluchtig is, oftewel, wat er in wordt opgeslagen is na een herstart van het image weg.

Er zal iig iets van een webserver in die docker draaien. De proxy_pass naar 8080 wil alleen maar zeggen dat er een port forward is van je lokale machine naar de docker instantie. Kijk dus eens in de docker via 'docker shell'. Of zoek via Google hoe je non-destructief in je docker kan komen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hero of Time schreef op dinsdag 21 januari 2020 @ 08:03:
Als je weet waar de database draait, kan je daar als systeem root gebruiker vaak zonder wachtwoord in met, jawel, de root gebruiker van mysql.

Wat er met die docker zal zijn, is waarschijnlijk dat er een lokaal filesystem aan gekoppeld is. Want wat ik met mijn beperkte kennis van docker begrijp is dat het interne filesystem vluchtig is, oftewel, wat er in wordt opgeslagen is na een herstart van het image weg.

Er zal iig iets van een webserver in die docker draaien. De proxy_pass naar 8080 wil alleen maar zeggen dat er een port forward is van je lokale machine naar de docker instantie. Kijk dus eens in de docker via 'docker shell'. Of zoek via Google hoe je non-destructief in je docker kan komen.
Ah, bedankt. Makes sense.

Echter:
code:
1
2
[~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)


Ik ga even zoeken hoe ik op die docker kom zonder 'm te slopen.
Pagina: 1