N'ayez pas peur, parce qu'un courageux groupe de Ops les Programmeurs ont résolu la situation avec un flambant neuf nginx_tcp_proxy_module
Écrit en août 2012, donc si vous êtes de l'avenir, vous devriez faire vos devoirs.
Conditions préalables
Suppose que vous utilisez CentOS:
- Supprimer l'instance courante de NGINX (vous suggérons d'utiliser serveur de dev)
- Si possible, enregistrez votre ancien NGINX fichiers de configuration de sorte que vous pouvez les utiliser de nouveau (qui comprend votre
init.d/nginx
script)
-
yum install pcre pcre-devel openssl openssl-devel
et toutes les autres libs pour la construction de NGINX
- Obtenir le nginx_tcp_proxy_module à partir de GitHub ici https://github.com/yaoweibin/nginx_tcp_proxy_module et n'oubliez pas le dossier où vous l'avez mis (assurez-vous qu'il n'est pas zippé)
La construction de Votre NGINX
Encore une fois, suppose 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
(vous pouvez ajouter d'autres modules si vous en avez besoin)
make
make install
En option:
sudo /sbin/chkconfig nginx on
Configurer Nginx
N'oubliez pas de copier les anciens fichiers de configuration d'abord si vous voulez les utiliser de nouveau.
Important: vous aurez besoin de créer un tcp {}
directive au plus haut niveau dans votre conf. Assurez-vous qu'il n'est pas à l'intérieur de votre http {}
directive.
L'exemple de config ci-dessous montre un en amont serveur websocket, et de deux procurations pour SSL et Non-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;
}
}