Не бійтеся, тому що хоробра група програмістів Ops вирішила ситуацію, коли бренд виплескав новий nginx_tcp_proxy_module
Написано в серпні 2012 року, тому якщо ви з майбутнього, ви повинні робити домашні завдання.
Передумови
Припускаємо, що ви використовуєте CentOS:
- Видаліть поточний екземпляр NGINX (запропонуйте використовувати для цього сервер dev)
- Якщо можливо, збережіть старі конфігураційні файли 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 {}
директиву на найвищому рівні у вашому конфлікті. Переконайтесь, що він не знаходиться в межах вашої http {}
директиви.
Наведений нижче приклад конфігурації показує один сервер веб-розширень верхнього потоку та два проксі для SSL та 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;
}
}