nginx proxy to comet

Potrzebuję pomocy od guru Linuksa. Pracuję nad webapp, który zawiera serwer comet. Serwer comet działa na serwerze localhost: 8080 i wyświetla adres URL localhost: 8080 / long_polling dla klientów, z którymi można się połączyć. Moja webapp działa na localhost: 80.

W tym przypadku, jeśli nie masz pewności co do tego, czy Twoje dane osobowe są przetwarzane, skontaktuj się z nami, aby uzyskać więcej informacji na ten temat.]}
  1. nginx daje mi 504 Czas przejścia bramki po minucie, mimo że zmieniałem za każdym razem ustawienie time out na 600 sekund
  2. tak naprawdę nie chcę, aby nginx musiał proxy do serwera comet - proxy nginx nie jest zbudowany dla długotrwałych połączeń (do pół godziny ewentualnie). Wolałbym raczej pozwolić klientom na bezpośrednie połączenie z serwerem comet i pozwolić serwerowi comet zająć się tym.

Moje pytanie brzmi: czy jest jakaś sztuczka z Linuksem, która pozwala mi zdemaskować jeśli chcesz dowiedzieć się więcej na ten temat, skontaktuj się z nami. Musi coś być. Dlatego myślę, że na to pytanie najlepiej odpowie Guru Linuksa.

Powodem, dla którego potrzebuję /long_polling być narażony na port 80 jest to, że mogę używać AJAX do łączenia się z nim (ajax same-origin-policy).

To jest mój serwer proxy nginx.conf dla odniesienia:
proxy_redirect              off;                                                                                                                         
proxy_set_header            Host $host;
proxy_set_header            X-Real-IP $remote_addr;
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size        10m;
client_body_buffer_size     128k;
proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
proxy_buffer_size           4k;
proxy_buffers               4 32k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;
send_timeout                600;
proxy_buffering             off;
 15
Author: Sam Saffron, 2009-07-21

7 answers

Nie sądzę, że to możliwe ...

localhost:8080/long_polling jest URI... dokładniej, powinno być http://localhost:8080/long_polling... w HTTP URI zostanie rozwiązany jako żądanie /long_polling, aby port 80 do serwera z domeną 'localhost' ... oznacza to otwarcie połączenia tcp do 127.0.0.1: 80 i wysłanie

GET /long_polling HTTP/1.1
Host: localhost:8080

Plus kilka dodatkowych nagłówków HTTP ... jeszcze nie słyszałem, że porty mogą być powiązane z procesami ...

W rzeczywistości, jeśli dobrze rozumiem, nginx został zaprojektowany, aby być skalowalnym proxy ... ponadto twierdzą, że potrzebują 2,5 MB na 10000 połączeń HTTP na biegu jałowym ... więc to nie powinno być problemem ...

Jakiego serwera używasz? czy mógłbyś pozwolić serwerowi proxy comet na serwer WWW? zwykłe żądania http powinny być szybko obsługiwane ...

Greetz

Back2dos

 5
Author: back2dos,
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
2009-07-21 17:26:41

Oto mój nginx.conf i mój proxy.conf. Należy jednak pamiętać, że proxy.conf to przesada - właśnie ustawiałem wszystkie te ustawienia, próbując debugować mój program.

/etc/nginx / nginx.conf

worker_processes  1;                                                                                                                                     
user www-data;

error_log  /var/log/nginx/error.log debug;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include /etc/nginx/proxy.conf;

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  600;
    tcp_nodelay        on;

    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

/etc/nginx/proxy.conf

proxy_redirect              off;                                                                                                                         
proxy_set_header            Host $host;
proxy_set_header            X-Real-IP $remote_addr;
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size        10m;
client_body_buffer_size     128k;
proxy_connect_timeout       6000;
proxy_send_timeout          6000;
proxy_read_timeout          6000;
proxy_buffer_size           4k;
proxy_buffers               4 32k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;
send_timeout                6000;
proxy_buffering             off;
proxy_next_upstream error;
 7
Author: Chris,
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
2009-07-22 19:18:36

Udało mi się to teraz uruchomić. Dziękuję wszystkim. Powodem, dla którego nginx był 504 timing out, był głupi: nie uwzględniłem proxy.conf w moim nginx.conf like so:

include /etc/nginx/proxy.conf;
Więc zachowuję Nginx jako proxy interfejsu do serwera COMET.
 6
Author: Chris,
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
2009-07-22 15:03:20

[[0]} jest teraz wtyczka Comet dla Nginx. To prawdopodobnie rozwiąże Twoje problemy całkiem ładnie.

Http://www.igvita.com/2009/10/21/nginx-comet-low-latency-server-push/

 3
Author: Phill Kenoyer,
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
2009-12-07 22:30:55

Try

proxy_next_upstream error;

Wartość domyślna to

proxy_next_upstream error timeout;

Limit czasu nie może być dłuższy niż 75 sekund.

Http://wiki.nginx.org/NginxHttpProxyModule#proxy_next_upstream

Http://wiki.nginx.org/NginxHttpProxyModule#proxy_connect_timeout

 2
Author: z8000,
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
2009-07-22 13:25:50

Bez wykonywania poważnych mrugania TCP/IP, nie można wystawiać dwóch aplikacji na tym samym porcie TCP na tym samym adresie IP. gdy nginx rozpocznie obsługę połączenia,nie może go przekazać do innej aplikacji, może tylko go zastąpić.

Więc albo użytkownik inny port, inny numer IP (może być na tej samej fizycznej maszynie), albo żyć z proxy.

[[0]}Edit: domyślam się, że nginx nie ma czasu, ponieważ nie widzi żadnej aktywności przez długi czas. może dodanie null wiadomość co kilka minut może zapobiec awarii połączenia.
 0
Author: Javier,
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
2009-07-21 21:06:45

Możesz spróbować listen (80) na węźle.serwer js zamiast 8080 (zakładam, że używasz go jako serwera asynchronicznego?) i potencjalnie całkowicie przegapić Ngnix. Używam connect middleware i express do plików statycznych serwera i zajmuję się buforowaniem, które normalnie byłoby obsługiwane przez Ngnix. Jeśli chcesz mieć uruchomione wiele instancji node (co radzę), możesz zajrzeć do node.sam js jako proxy / load balancer do innych instancji węzła, a nie Nginx jako twój gateway. Napotkałem z tym problem, gdy serwowałem zbyt wiele statycznych plików graficznych na raz, ale po umieszczeniu obrazów Na S3 ustabilizował się. Nginx może być przesadą z powodu tego, co robisz. Spróbuj i zobacz. Powodzenia.

 0
Author: fullstacklife,
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
2010-10-18 20:23:24