• Digitaaliset tarvikkeet
  • Palvelin
  • Digitaalinen elämä
  • Tietosuojakäytäntö
  • Ota meihin yhteyttä
  1. Home
  2. Article
  3. Isännöi useita verkkosivustoja yhdellä isännällä Dockerin avulla

Isännöi useita verkkosivustoja yhdellä isännällä Dockerin avulla

Rsdaa 01/01/2022 1720

Isännöi useita aliverkkotunnuksia/sovelluksia yhdellä isännällä Dockerin avulla

Docker sopii yhä paremmin henkilökohtaisiin ympäristöihin, erityisesti yksityisiin palvelimiin, joita voidaan siirtää hyvin usein.

Kehittäjällä on yleensä useampi kuin yksi sovellus omalla yksityisellä palvelimellaan, kuten blogissa, ja joitain kehityssovelluksia, kuten Jenkins, GitLab ja niin edelleen. Nämä sovellukset käyttävät todennäköisesti tavallista verkkoporttia 80. Koska tämä portti on jo sidottu esimerkiksi pääsivustoosi, Docker-instanssit eivät ole käytettävissä koko tämän portin aikana.

Tämä viesti näyttää sinulle yhden tavan isännöidä useita sovelluksia, kuten blogia, henkilökohtaista verkkosivustoa ja monia muita, yhdellä palvelimella Docker-säilöillä.

Kohdearkkitehtuuri

Ihanteellinen arkkitehtuuri useiden sovellusten isännöimiseen erillisessä palvelimessa olisi paljastaa jokainen sovellus portissa 80 tietyn aliverkkotunnuksen (blog.domain.com, jenkins.domain.com) kautta. , gitlab.domain.com).

Nginxin käyttäminen käänteisenä välityspalvelimena

Nämä vaatimukset voidaan saavuttaa käyttämällä välityspalvelinta (kutsutaan myös käänteiseksi välityspalvelimeksi). Tässä on kaavio:

Tämä klassinen arkkitehtuuri voitaisiin toteuttaa käyttämällä Nginxiä käänteisenä välityspalvelimena, mutta tähän ratkaisuun liittyy haittoja:

tarve kirjoittaa määritystiedosto sovellusta/säilöä kohden Nginxin välityspalvelimen lataamiseksi uudelleen aina, kun sovellus tai säilö lisätään arkkitehtuuriin.

Jason Wilderin nginx-välityspalvelimen käyttäminen

Nginx-välityspalvelin koostuu yksinkertaisesta Nginxistä server anddocker-gen. Docker-gen on pieni Go-kielellä kirjoitettu työkalu, jota voidaan käyttää Nginx/HAProxy-määritystiedostojen luomiseen käyttämällä Docker-säilöjen metatietoja (saatu Docker API:n kautta).

Nämä kaksi sovellusta toimivat Docker-säilöinä, joten ne on helppo käynnistää. Kun nginx-proxy on aloitettu, se toimii käänteisenä välityspalvelimena isännän ja kaikkien aliverkkotunnustesi (blog.domain.com, jenkins.domain.com jne.) välillä ja reitittää saapuvat pyynnöt tehokkaasti VIRTUAL_HOST-ympäristömuuttujan avulla (jos se on asetettu). , jokaiselle Docker-kontille).

Jotta haluat välityspalvelimen Docker-säilön, sinun on periaatteessa esitettävä sovellusten käyttämä portti (esimerkiksi 80 WordPressille) ja lisättävä säilöön VIRTUAL_HOST-ympäristömuuttuja:

Käyttämällä docker run command:docker run -d --expose 80 -e VIRTUAL_HOST=blog.domain.com wordpress

Docker-compose.yml-tiedoston kautta:

wordpress:image: wordpresslinks:- db:mysqlexpose:- 80environment:- "VIRTUAL_HOST=blog.domain.com"db:image: mariadbenvironment:MYSQL_ROOT_PASSWORD: esimerkki

Seuraava kokoonpano voitaisiin esittää näin:

Kuten yllä näet, Nginx-välityspalvelin kuuntelee http-standardiporttia (80) ja välittää saapuvat pyynnöt sopivaan säiliöön. Katsotaan myöhemmin, miten tämä reititys tehdään.

Nginx-proxyn käynnistäminen

Käynnistä nginx-proxy kirjoittamalla seuraava komento:

shell Docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy

Dokkerin kirjoitussyntaksin käyttäminen:

nginx-proxy:image: jwilder/nginx-proxyports:- "80:80"volumes:- /var/run/docker.sock:/tmp/docker.sock

Päivitys:Kuten Moon ehdotti kommentissaan, voit lisää ylimääräinen suojaus piilottaaksesi Nginx-palvelinversion mukautetun määritystiedoston avulla:

server_tokens off;

Jos haluat saada nginx-proxyn käyttämään mukautettua Nginx-määritystiedostoasi, käynnistä se tällä lipulla:

-v /path/to/my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro

Kuinka se toimii?

Kuten voit arvata viimeisellä komennolla, nginx-proxy-säilö kuuntelee porttia 80 ja sillä on pääsy Docker-isäntäpistorasiaan. Antamalla Docker-isäntäpistokkeen nginx-proxy-säilö voi vastaanottaa Docker-tapahtumia (esim. säilön luontia, sammutuksia jne.) ja reagoida niihin.

Nginx-proxy-säilö etsii käynnistyksessään säilöjä, joissa on VIRTUAL_HOST-ympäristömuuttuja, ja luo niistä kullekin sopivan Nginx-perusmääritystiedoston. Nämä määritystiedostot kertovat Nginxille, kuinka saapuvat pyynnöt välitetään taustalla oleviin säilöihin.

Sitten aina, kun säilö käynnistyy, nginx-välityspalvelin vastaanottaa tapahtuman ja luo asianmukaisen Nginx-määrityksen, jota tarvitaan konttisovelluksen palvelemiseen ja Nginxin lataamiseen uudelleen.

Reitityspyynnöt VIRTUAL_HOST-ympäristömuuttujan avulla:

Nginx-välityspalvelin reitittää pyynnöt säilöihin kunkin säilön VIRTUAL_HOST-ympäristömuuttujan mukaisesti. Tämä tarkoittaa, että jos haluat, että säilöä käytetään tietyllä verkkotunnuksella tai aliverkkotunnuksella, sinun on käynnistettävä tämä halutulla VIRTUAL_HOST-ympäristömuuttujalla.

Tässä on esimerkki:

# Käynnistä WordPress (db-osa jätetty pois selvyyden vuoksi) Docker run -d --name blogi --expose 80 -e VIRTUAL_HOST=blog.domain.com wordpress# Käynnistä Jenkinsdocker run -d --name jenkinsci --expose 8080 -e VIRTUAL_HOST= jenkins.domain.com -e VIRTUAL_PORT=8080 jenkins

Tässä on jälleen vastaava kokoonpano Jenkins-instanssille, jossa käytetään docker-compose-syntaksia:

jenkins:image: jenkinsexpose:- 8080- 50000environment:- "VIRTUAL_HOST=jenkins.domain.com"- "VIRTUAL_PORT=8080"volumes:- "/your/home:/var/jenkins_home"

Huomaa: portti, jota käyttää säiliön sisällä olevan sovelluksen on oltava esillä, jotta nginx-proxy voi nähdä sen. Jos sovellus paljastaa useita portteja, sinun on kerrottava nginx-proxylle, mikä portti välityspalvelimelle VIRTUAL_PORT-ympäristömuuttujan avulla.

Tässä esimerkissä nginx-proxy välittää kaikki pyynnöt, jotka vastaavat blog.domain.com-url-osoitetta WordPress-säilöyn. Kaikki osoitteella jenkins.domain.com alkavat pyynnöt kuitenkin välitetään Jenkins-säilöön.

Tämä työkalu on todella yksinkertainen ja tarjoaa suurta joustavuutta. Se mahdollistaa useiden Docker-säilöjen käytön samassa omistetussa palvelimessa kirjoittamatta paljon asetuksia.

Vinkki: Säilön yhdistäminen useisiin verkkotunnuksiin: Yleinen vaatimus on käyttää useita verkkotunnuksia tietylle säilölle. Voit tehdä tämän lisäämällä isännät VIRTUAL_HOST-muuttujaan seuraavasti: VIRTUAL_HOST=domain.com,www.domain.com,home.domain.com

Lisätietoja löytyy seuraavasta URL-osoitteesta: https://github.com/jwilder/nginx-proxy.


PREV: Palvelimen virtualisointi - javatpoint

NEXT: 5 Virtualisoinnin etuja ja haittoja | Haittoja...

Popular Articles

Hot Articles

Navigation Lists

Back to Top