Kirjoittaja Aihe: NGINX palvelimeen websocketit javascriptin kautta.  (Luettu 581 kertaa)

HannuTapio

  • Käyttäjä
  • Viestejä: 1224
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
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.

:) :) :)

--
« Viimeksi muokattu: 27.05.21 - klo:22.48 kirjoittanut HannuTapio »
Linux lautapelejä indie, hobby boardgame indie.
Ubuntu 20.04 LTS.
ESET Endpoint Security Antivirus - Business Edition - 6 nodes.

Indie sivustoni -> https://www.lautapelisivusto.com - - https://www.tabletpelisivusto.com - - https://www.hannunpilotit.com - - https://www.lautapelikenraalit.com

HannuTapio

  • Käyttäjä
  • Viestejä: 1224
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
Vs: NGINX palvelimeen websocketit javascriptin kautta.
« Vastaus #1 : 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";
}

:) :) :)

--
Linux lautapelejä indie, hobby boardgame indie.
Ubuntu 20.04 LTS.
ESET Endpoint Security Antivirus - Business Edition - 6 nodes.

Indie sivustoni -> https://www.lautapelisivusto.com - - https://www.tabletpelisivusto.com - - https://www.hannunpilotit.com - - https://www.lautapelikenraalit.com

HannuTapio

  • Käyttäjä
  • Viestejä: 1224
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
Vs: NGINX palvelimeen websocketit javascriptin kautta.
« Vastaus #2 : 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,

:) :) :)

--
Linux lautapelejä indie, hobby boardgame indie.
Ubuntu 20.04 LTS.
ESET Endpoint Security Antivirus - Business Edition - 6 nodes.

Indie sivustoni -> https://www.lautapelisivusto.com - - https://www.tabletpelisivusto.com - - https://www.hannunpilotit.com - - https://www.lautapelikenraalit.com

nm

  • Käyttäjä
  • Viestejä: 14325
    • Profiili
Vs: NGINX palvelimeen websocketit javascriptin kautta.
« Vastaus #3 : 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.

HannuTapio

  • Käyttäjä
  • Viestejä: 1224
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
Vs: NGINX palvelimeen websocketit javascriptin kautta.
« Vastaus #4 : 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.

:) :) :)

--
« Viimeksi muokattu: 31.05.21 - klo:12.20 kirjoittanut HannuTapio »
Linux lautapelejä indie, hobby boardgame indie.
Ubuntu 20.04 LTS.
ESET Endpoint Security Antivirus - Business Edition - 6 nodes.

Indie sivustoni -> https://www.lautapelisivusto.com - - https://www.tabletpelisivusto.com - - https://www.hannunpilotit.com - - https://www.lautapelikenraalit.com

nm

  • Käyttäjä
  • Viestejä: 14325
    • Profiili
Vs: NGINX palvelimeen websocketit javascriptin kautta.
« Vastaus #5 : 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.
« Viimeksi muokattu: 31.05.21 - klo:12.44 kirjoittanut nm »

HannuTapio

  • Käyttäjä
  • Viestejä: 1224
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
Vs: NGINX palvelimeen websocketit javascriptin kautta.
« Vastaus #6 : 31.05.21 - klo:13.06 »
WSS,

Minä vaihdoin tuon 80 portin, WSS porttiin 443.

Toimii ihan ok.

Kiitos,

:) :) :)

--
Linux lautapelejä indie, hobby boardgame indie.
Ubuntu 20.04 LTS.
ESET Endpoint Security Antivirus - Business Edition - 6 nodes.

Indie sivustoni -> https://www.lautapelisivusto.com - - https://www.tabletpelisivusto.com - - https://www.hannunpilotit.com - - https://www.lautapelikenraalit.com