Nie bój się, ponieważ odważna grupa programistów operacji rozwiązała sytuację dzięki nowemu nginx_tcp_proxy_module
Napisany w sierpniu 2012 roku, więc jeśli jesteś z przyszłości, powinieneś odrobić lekcje.
Wymagania wstępne
Zakłada, że używasz CentOS:
- Usuń bieżące wystąpienie NGINX (zasugeruj użycie do tego serwera deweloperskiego)
- Jeśli to możliwe, zapisz stare pliki konfiguracyjne NGINX, aby móc ich ponownie użyć (w tym
init.d/nginx
skryptu)
yum install pcre pcre-devel openssl openssl-devel
i wszelkie inne niezbędne biblioteki do budowania NGINX
- Pobierz nginx_tcp_proxy_module z GitHub tutaj https://github.com/yaoweibin/nginx_tcp_proxy_module i zapamiętaj folder, w którym go umieściłeś (upewnij się, że nie jest spakowany)
Zbuduj swój nowy NGINX
Ponownie zakłada CentOS:
cd /usr/local/
wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
tar -xzvf nginx-1.2.1.tar.gz
cd nginx-1.2.1/
patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch
./configure --add-module=/path/to/nginx_tcp_proxy_module --with-http_ssl_module
(możesz dodać więcej modułów, jeśli ich potrzebujesz)
make
make install
Opcjonalny:
sudo /sbin/chkconfig nginx on
Skonfiguruj Nginx
Pamiętaj, aby najpierw skopiować stare pliki konfiguracyjne, jeśli chcesz ich ponownie użyć.
Ważne: będziesz musiał stworzyć tcp {}
dyrektywę na najwyższym poziomie w swoim conf. Upewnij się, że nie znajduje się on w Twojej http {}
dyrektywie.
Poniższa przykładowa konfiguracja przedstawia pojedynczy nadrzędny serwer sieci Web i dwa serwery proxy zarówno dla SSL, jak i bez SSL.
tcp {
upstream websockets {
## webbit websocket server in background
server 127.0.0.1:5501;
## server 127.0.0.1:5502; ## add another server if you like!
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
server_name _;
listen 7070;
timeout 43200000;
websocket_connect_timeout 43200000;
proxy_connect_timeout 43200000;
so_keepalive on;
tcp_nodelay on;
websocket_pass websockets;
websocket_buffer 1k;
}
server {
server_name _;
listen 7080;
ssl on;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.key;
timeout 43200000;
websocket_connect_timeout 43200000;
proxy_connect_timeout 43200000;
so_keepalive on;
tcp_nodelay on;
websocket_pass websockets;
websocket_buffer 1k;
}
}