将 Nginx 配置为 TCP 负载均衡器

Configure Nginx to be a TCP load balancer

我想使用 Nginx 1.9 作为 TCP 负载均衡器。我按照 https://www.nginx.com/resources/admin-guide/tcp-load-balancing/ 中的教程进行操作,但没有用。

每次尝试启动 nginx 时,我都会遇到错误:

nginx: [emerg] unknown directive "stream" in /opt/nginx/nginx.conf

这是我的 nginx.conf 文件:

events {
    worker_connections  1024;
}


http {
# blah blah blah
}

stream {
    upstream backend {
        server 127.0.0.1:9630;
        server 127.0.0.1:9631;
    }
    server {
        listen 2802;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }
}

你能告诉我如何正确配置吗?

最好的方法是从源代码编译 nginx 以支持 stream 指令:

./configure --prefix=/opt/nginx --sbin-path=/usr/sbin/nginx  --conf-path=/opt/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-threads --with-stream --with-http_slice_module
make
sudo make install

在 OS X 上使用 Homebrew,可以通过以下方式完成:

brew install nginx-full --with-stream

这可能会要求您先安装 homebrew-nginx 水龙头,在这种情况下您可能需要 运行

brew install homebrew/nginx/nginx-full --with-stream

确保先安装水龙头。

如果您使用 linux,则有 nginx standard repositories

./configure --with-stream
make
make install