Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: 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 -
gTCPPort = 43000;
let gurl = "wss://www.lautapelimestari.com/_WS_:" + gTCPPort;
gTCPWebSocket = new WebSocket(gurl);
ja NGINX palvelimessa, lautapelimestari conf sites-available hakemistossa.
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.
:) :) :)
--
-
RATKAISTUNA,
Hei, minä jo osasinkin itse, netistä löytyi sittenkin toimivaa ohjetta.
Tässä minulla toimiva koodi -
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";
}
:) :) :)
--
-
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,
:) :) :)
--
-
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.
-
Hei,
Minä laitoin näin -
gTCPPort = 80;
let gurl = "wss://www.lautapelimestari.com/_WS_:" + gTCPPort;
gTCPWebSocket = new WebSocket(gurl);
Ja vielä -
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.
:) :) :)
--
-
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.
-
WSS,
Minä vaihdoin tuon 80 portin, WSS porttiin 443.
Toimii ihan ok.
Kiitos,
:) :) :)
--