Skip to content

Webbservrar ​

Hanterade Webbservrar kör Nginx eller Apache åt dig — plattformen etablerar VM:en, installerar och konfigurerar webbservern (valfritt med PHP), binder dina domäner, distribuerar ditt innehåll och kan publicera webbplatsen på internet vid behov.

Skapa en webbserver ​

I portalen går du till Webbservrar → Instanser → Skapa och väljer:

  • Typ — Nginx eller Apache, och en version (de startbara versionerna finns i rullgardinsmenyn; den rekommenderade är markerad).
  • Flavor — storleken, från familjen web.co1.* (small … xlarge).
  • Lagring — diskstorlek för dokumentroten.
  • VPC + subnät.
  • PHP — aktivera valfritt PHP och välj en version (8.1 / 8.2 / 8.3).

Från CLI:et ​

Livscykelkommandon är typspecifika (fm webserver nginx … / fm webserver apache …).

bash
fm webserver nginx instance create \
  --name site-1 \
  --version 1.30 \
  --flavor web.co1.small \
  --storage 20 \
  --vpc my-vpc \
  --subnet my-subnet \
  --php-enabled --php-version 8.3

# Apache är symmetriskt: fm webserver apache instance create …

Med Terraform ​

hcl
resource "frostmoln_nginx_instance" "site" {
  name        = "site-1"
  version     = "1.30"
  flavor_id   = "web.co1.small"
  storage_gb  = 20
  vpc_id      = frostmoln_vpc.main.id
  subnet_id   = frostmoln_subnet.main.id
  php_enabled = true
  php_version = "8.3"
}

(frostmoln_apache_instance är Apache-motsvarigheten.)

PHP är låst under instansens livstid

Att aktivera PHP eller byta PHP-version kräver att instansen återskapas — det kan inte slås på för en körande webbserver. Välj den version du behöver redan vid skapandet.

Distribuera innehåll ​

Publicera din webbplats genom att ladda upp ett .tar.gz-arkiv av din dokumentrot. Plattformen packar upp det i en ny release-katalog och byter atomiskt den aktiva symboliska länken till den, så att övergången blir omedelbar och den föregående releasen behålls för återställning.

I portalen öppnar du webbserverns detaljsida och använder fliken Deploy för att ladda upp ett arkiv; distributionshistoriken listas där.

Från CLI:et ​

bash
# Distribuera ett arkiv till en instans
fm webserver nginx deploy <instance-id> ./site.tar.gz

# Lista tidigare distributioner (nyast först)
fm webserver nginx deploys list <instance-id>

# Apache: fm webserver apache deploy … / fm webserver apache deploys list …

Med Terraform ​

hcl
resource "frostmoln_webserver_deployment" "site" {
  instance_id    = frostmoln_nginx_instance.site.id
  source_archive = "${path.module}/site.tar.gz"
}

Terraform spårar arkivets innehållshash — bygg om site.tar.gz så distribuerar nästa terraform apply automatiskt en ny release.

Konfiguration ​

En liten, kurerad uppsättning inställningar kan justeras utan att röra rå Nginx-/Apache-konfiguration. Nycklarna är desamma för båda typerna:

NyckelVad den styr
indexFilesIndexfilnamn som prövas för en katalogbegäran (t.ex. index.html index.php)
spaFallbackServera index.html för omatchade rutter (single-page-app-fallback)
clientMaxBodySizeMaximal storlek på begäran/uppladdning (t.ex. 25m)
gzipAktivera gzip-komprimering av svar
securityHeadersSkicka en grunduppsättning säkerhetssvarshuvuden
error404PageSökväg till en anpassad 404-sida
error500PageSökväg till en anpassad 500-sida

I portalen använder du fliken Config på webbserverns detaljsida.

Från CLI:et ​

bash
# Visa den aktuella konfigurationen
fm webserver nginx config get <instance-id>

# Sätt ett värde
fm webserver nginx config set <instance-id> spaFallback=true
fm webserver nginx config set <instance-id> clientMaxBodySize=25m

Med Terraform ​

Sätt config-mappen på instansresursen:

hcl
resource "frostmoln_nginx_instance" "site" {
  # … skapandeargument enligt ovan …

  config = {
    indexFiles        = "index.html index.htm"
    spaFallback       = "true"
    clientMaxBodySize = "25m"
    gzip              = "true"
    securityHeaders   = "true"
  }
}

Domäner ​

Bind en eller flera domäner till en körande webbserver. Bindningen är en notering hos plattformen: servern svarar på vilket värdnamn som helst som pekas mot dess IP, så det är DNS som gör en domän live — bindningen markerar vilka domäner du betraktar som dina och vilken som är standard.

bash
fm webserver nginx domain add <instance-id> --name example.com

HTTPS termineras inte åt dig ännu

Plattformen utfärdar och förnyar inte certifikat för en bunden domän. TLS-flaggan på bindningen — och TLS-reglaget och den gröna Enabled-märkningen på instansen i portalen — registrerar bara din avsikt: inget certifikat tillhandahålls, ingenting lyssnar på 443, och webbplatsen serveras över HTTP. Terminera TLS framför webbservern själv om du behöver HTTPS i dag.

(Eller Terraform-resursen frostmoln_webserver_domain.) Peka din domäns DNS mot serverns publika IP (se nedan) och markera en domän som standard.

Publicera på internet ​

En hanterad webbserver är privat som standard — den får en privat IP och är endast nåbar från instanser i samma VPC. För att servera den på det publika internet, exponera den: plattformen allokerar en publik IP, associerar den med servern, och instansen visar sedan en publik IP.

I portalen använder du åtgärden Expose på instansen.

Från CLI:et ​

bash
fm webserver nginx expose <instance-id>     # allokera + koppla en publik IP
fm webserver nginx unexpose <instance-id>   # frigör den (tillbaka till privat)

Med Terraform ​

hcl
resource "frostmoln_nginx_instance" "site" {
  # … skapandeargument enligt ovan …
  public = true
}

Exponering allokerar en debiterad publik IP

Exponering allokerar en publik IP, som debiteras så länge den innehas. Att avexponera servern — eller ta bort den — frigör den publik IP:n.

Vad som är öppet, och för vem ​

Varje webbserver får en egen säkerhetsgrupp — en brandvägg som plattformen skapar och kopplar på när instansen skapas. Den tillåter inkommande tcp/80 och tcp/443 från alla källor (0.0.0.0/0), och utgående trafik är obegränsad. Så länge servern är privat är ingen publik IP kopplad, så inget utanför ditt VPC når den; när du väl exponerar den är de två portarna öppna mot hela internet.

Allt som redan kan routa in i ditt VPC — dina andra instanser, en peering, ett VPN — når också 80/443, inklusive lastbalanseraren som föreslås nedan.

Gruppens id finns på instansen (security_group_id i Terraform, och visas i portalen), så du kan inspektera dess regler:

bash
fm network security-group get <sg-id>

Källintervallet går ännu inte att begränsa

Den här gruppen hanteras av plattformen: den är inte avsedd för dig att ändra, och ändringar av den avvisas normalt. Det innebär också att du ännu inte kan begränsa 80/443 till ditt eget adressintervall. En framtida version låter dig begränsa källan; standardvärdet på befintliga servrar ändras inte under dig. Om du behöver det begränsat idag, håll webbservern privat och sätt en lastbalanserare eller en egen proxy framför den.

Livscykel och begränsningar ​

  • Starta, stoppa, starta om, ändra storlek (utöka lagring) och ta bort från instansens detaljsida eller via CLI:et (fm webserver nginx instance start|stop|restart|resize|delete).
  • PHP är låst efter skapandet — återskapa instansen för att ändra det.
  • Återställning — den föregående releasen behålls efter varje distribution.
  • Ingen inbyggd lastbalansering eller autoskalning mellan webbserverinstanser (placera en lastbalanserare framför för det).

Relaterat ​