专注 K8S研究
分类: 系统运维
2019-04-23 20:53:53
nginx-sticky-module第三方模块主要用于基于cookie实现会话保持。
nginx sticky 模块工作流程图
安装nginx+stiky
# wget # tar -xzvf nginx-sticky-module-1.1.tar.gz # wget # tar -xzvf nginx-1.8.1.tar.gz # cd nginx-1.8.1 # ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=../nginx-sticky-module-1.1 # make # make install
执行./configure的过程中可能会遇到以下错误:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using –without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using –with-pcre= option.
执行该命令解决:
yum -y install pcre-devel
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using –with-openssl= option.
执行该命令解决:
yum -y install openssl openssl-devel
在执行make的时候会报错:
../nginx-sticky-module-1.1/ngx_http_sticky_misc.c:281:2: error: passing argument 2 of ‘ngx_sock_ntop’ makes integer from pointer without a cast [-Werror]
digest->len = ngx_sock_ntop(in, digest->data, len, 1);
解决办法:
cd ../nginx-sticky-module-1.1 vim ngx_http_sticky_misc.c 将281行的digest->len = ngx_sock_ntop(in, digest->data, len, 1);改成 digest->len = ngx_sock_ntop(in, sizeof(struct sockaddr_in), digest->data, len, 1);
配置nginx sticky
upstream dispatch { sticky; server 192.168.100.100:8080; server 192.168.100.102:8080; }
server { listen 80; server_name abswolf.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass } }