Не бойтесь, потому что отважная группа программистов Ops разрешила ситуацию, когда бренд порвал новый модуль nginx_tcp_proxy_module
Написано в августе 2012 года, поэтому, если вы из будущего, сделайте домашнее задание.
Предпосылки
Предполагается, что вы используете CentOS:
- Удалить текущий экземпляр NGINX (предлагаем использовать для этого сервер разработки)
- Если возможно, сохраните свои старые файлы конфигурации NGINX, чтобы вы могли повторно использовать их (включая ваш
init.d/nginx
скрипт)
yum install pcre pcre-devel openssl openssl-devel
и любые другие необходимые библиотеки для сборки NGINX
- Получите nginx_tcp_proxy_module с GitHub здесь https://github.com/yaoweibin/nginx_tcp_proxy_module и запомните папку, в которую вы его поместили (убедитесь, что она не заархивирована)
Создайте свой новый NGINX
Опять же, предполагает 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
(вы можете добавить дополнительные модули, если они вам нужны)
make
make install
По желанию:
sudo /sbin/chkconfig nginx on
Настроить Nginx
Не забудьте сначала скопировать старые файлы конфигурации, если вы хотите использовать их повторно.
Важно: вам нужно будет создать tcp {}
директиву на самом высоком уровне в вашем conf. Убедитесь, что это не входит в вашу http {}
директиву.
В приведенном ниже примере конфигурации показан один восходящий сервер websocket и два прокси для SSL и без 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;
}
}