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.]}- nginx daje mi 504 Czas przejścia bramki po minucie, mimo że zmieniałem za każdym razem ustawienie time out na 600 sekund
- 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;
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
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;
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.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/
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
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.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.
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