Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: HannuTapio - 27.05.21 - klo:22.46

Otsikko: NGINX palvelimeen websocketit javascriptin kautta.
Kirjoitti: HannuTapio - 27.05.21 - klo:22.46
Hei,

Minulla on palvelin jossa on nginx, minulla on eka asennus nginx http / https ohjelmasta, olen aina ennen käyttänä apachea ja lighttpd ohjelmia.

Minulla on seuraavasti -

Javascript -
Koodia: [Valitse]
gTCPPort = 43000;
let gurl = "wss://www.lautapelimestari.com/_WS_:" + gTCPPort;
gTCPWebSocket = new WebSocket(gurl);

ja NGINX palvelimessa, lautapelimestari conf sites-available hakemistossa.

Koodia: [Valitse]
location /_WS_/ {
    proxy_pass http://localhost:43000;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

Tuo localhost:43000 on sitten java server ohjelmani.

Mutta, ei toimi, en tiedä mistä kohden on väärin.

:) :) :)

--
Otsikko: Vs: NGINX palvelimeen websocketit javascriptin kautta.
Kirjoitti: HannuTapio - 28.05.21 - klo:04.47
RATKAISTUNA,

Hei, minä jo osasinkin itse, netistä löytyi sittenkin toimivaa ohjetta.

Tässä minulla toimiva koodi -

Koodia: [Valitse]
location /_WS_:43000 {
    proxy_pass http://localhost:43000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # WebSocket support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

:) :) :)

--
Otsikko: Vs: NGINX palvelimeen websocketit javascriptin kautta.
Kirjoitti: HannuTapio - 30.05.21 - klo:08.52
Osaamista,

Minä en ihan tarkkaan tiedä onko tuossa kaikki mitä on hyvä olla websockettien kanssa.

Tuo yllä on toiminu minulla nyt pari päivää, ilman ongelmaa, tahdon silti vielä kysyä, että, -

Puuttuuko tuosta vielä jotain tärkeää, tai onko siinä jotakin ihan turhaa default riviä ?

Kiitosta vaan,

:) :) :)

--
Otsikko: Vs: NGINX palvelimeen websocketit javascriptin kautta.
Kirjoitti: nm - 30.05.21 - klo:12.34
Minä en ihan tarkkaan tiedä onko tuossa kaikki mitä on hyvä olla websockettien kanssa.

Vaihtaisin ulkoiseksi portiksi saman, jonka kautta muukin palvelu toimii eli 80 tai HTTPS:n tapauksessa 443 (joka tosin vaatii muutakin säätöä). Nyt on turhaan tuolla 43000-portissa, joka ei välttämättä toimi kaikkien palomuurien läpi.
Otsikko: Vs: NGINX palvelimeen websocketit javascriptin kautta.
Kirjoitti: HannuTapio - 31.05.21 - klo:11.56
Hei,

Minä laitoin näin -

Koodia: [Valitse]
gTCPPort = 80;
let gurl = "wss://www.lautapelimestari.com/_WS_:" + gTCPPort;
gTCPWebSocket = new WebSocket(gurl);

Ja vielä -

Koodia: [Valitse]
location /_WS_:80 {
    proxy_pass http://localhost:43000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # WebSocket support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Noinko tarkoitit, minulla tämä 443 jää file siirtoihin, niin, tuo 80 on vapaana websocketille ?

Mutta, hienoa, en osannut tuollaista huomata.

:) :) :)

--
Otsikko: Vs: NGINX palvelimeen websocketit javascriptin kautta.
Kirjoitti: nm - 31.05.21 - klo:12.38
Noinko tarkoitit, minulla ainakin tämä eka testi tuntuu toimivan

Joo. Porttia 80 tai 443 ei tarvitse erikseen määrittää kummassakaan päässä. Javascript-koodissa portti on oletuksena 80, jos käytät ws-protokollaa, ja 443, jos käytät wss-protokollaa.

Nginxissä kyseinen /_WS_-location laitetaan saman server-määrittelyn alle, jossa muukin palvelu sijaitsee ja portti asetetaan yhteisesti siellä server-määrittelyn puolella listen-rivillä. Eli jos kyseessä on SSL/TLS-suojattu palvelu, server-asetukset näyttävät tältä: http://nginx.org/en/docs/http/configuring_https_servers.html


en sitten tiedä mitenkä jos portti rasittuu useista latauksista samaa aikaan ?

Käyttöjärjestelmä ja Nginx kestävät kyllä sellaisen määrän rasitusta per portti, ettei raja tule vastaan. Koodaamasi websocket-palvelu rajoittaa samanaikaisten yhteyksien määrää ensimmäisenä, ja sen suorituskyvyn joudut itse arvioimaan ja testaamaan.

Jos oikeasti olisi tarvetta hajauttaa palvelu sisäisesti useille eri koneille tai palvelinprosesseille, Nginx mahdollistaa sen upstream-määrittelyn avulla: http://nginx.org/en/docs/http/ngx_http_upstream_module.html

Joka tapauksessa ei siis ole merkitystä, missä portissa palvelu toimii ulkoisesti, vaan kaiken liikenteen voi huoletta laittaa kulkemaan portin 443 kautta.
Otsikko: Vs: NGINX palvelimeen websocketit javascriptin kautta.
Kirjoitti: HannuTapio - 31.05.21 - klo:13.06
WSS,

Minä vaihdoin tuon 80 portin, WSS porttiin 443.

Toimii ihan ok.

Kiitos,

:) :) :)

--