Czy jest możliwe użycie portu 80 zarówno dla ruchu HTTP, jak i sieciowego?

  1. buduję stronę, która używa gniazd sieciowych (technicznie gniazd Flash) w celu zapewnienia komunikacji w czasie rzeczywistym.
  2. Chcę wspierać ludzi stojących za korporacyjnymi/akademickimi firewallami, które blokują wszystko oprócz Portu 80.]}
  3. chciałbym móc uruchomić stronę z jednej maszyny

Poprzednio używałem Apache do serwowania HTTP w połączeniu z Pythonem nasłuchującym na wysoko ponumerowanym gnieździe dla rzeczy websocket, ale to oczywiście nie będzie pracuj tutaj.

Zawsze mogę przenieść rzeczy websocket na oddzielny serwer, ale chciałbym uniknąć płacenia za drugi VPS (i muszę rozmawiać z bazą danych przez sieć zamiast lokalnie). Czy jest na to dobry sposób (nodejs, nginx, ..?), a może nie warto bólu głowy?

Author: Ender, 2011-05-11

6 answers

 6
Author: jgauffin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:26

Tak, używając węzła.js . Express lub connect dla obsługi pliku HTTP i socket.io Do Rzeczy WebSocket.

Przykład:

var express = require("express");
var app = express.createServer(); 

app.get('/', function(req, res){ 
    res.redirect("/index.html");
}); 

app.configure(function(){
  app.use(express.static(__dirname + '/public'));
});

app.listen(80); 

var io = require('socket.io'); 
var socket = io.listen(app); 
socket.on('connection', function(client){ 
  client.on('message', function(){...});
})
 15
Author: Detect,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-11 19:53:00

Oczywiście, że dasz radę.

Najpierw musisz sprawdzić swoją wersję Apache. Powinieneś mieć wersję 2.4+. Pokażę wam komendę dla mojego serwera na Ubuntu 14.4.

Po Drugie, włącz niezbędne moduły apache:

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel

Otwórz konf swojej domeny, w moim przypadku była to ścieżka do pliku:

/etc/apache2/sites-available/myDomain.pl.conf

Następnie dołącz ten kod

<VirtualHost>

.
.
.

RewriteEngine on

RewriteCond %{QUERY_STRING} transport=polling
RewriteRule /(.*)$ http://localhost:3001/$1 [P]

ProxyRequests off
ProxyPass /socket.io ws://localhost:3001/socket.io
ProxyPassReverse /socket.io ws://localhost:3001/socket.io

ProxyPass        /socket.io http://localhost:3001/socket.io
ProxyPassReverse /socket.io http://localhost:3001/socket.io
</VirtualHost>

Finally restart your apache

service apache2 restart
Baw się dobrze!
 4
Author: EliaszKubala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-03 19:12:51

GlassFish (i grizzly) obsługuje ruch HTTP i websockets na tym samym porcie, jeśli serwer java jest opcją.

 0
Author: cheeser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-22 03:08:02

Dla bezpiecznego websocket, wszystko, co musiałem zrobić, to dodać te trzy linie do mojego https virthualhost:

<VirtualHost *:443>

    [...https config...]

    SSLProxyEngine On
    ProxyPass "/web_socket"  "wss://localhost:7300/web_socket"
    ProxyPassReverse "/web_socket"  "wss://localhost:7300/web_socket"

</VirtualHost>

I włącz mod_proxy_wstunnel Apache module (używam apache 2.4.10):

a2enmod proxy_wstunnel
 0
Author: Teriblus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-18 09:13:13

Krótka odpowiedź brzmi nie, ponieważ możesz mieć tylko jeden proces nasłuchujący na jednym porcie. Możesz spróbować użyć portu 443, ponieważ ten również nie zostanie zablokowany, o ile nie używasz https.

 -5
Author: nycynik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-11 19:44:06