>  기사  >  운영 및 유지보수  >  nginx는 타사 모듈을 추가합니다.

nginx는 타사 모듈을 추가합니다.

王林
王林앞으로
2020-10-26 16:23:303187검색

nginx는 타사 모듈을 추가합니다.

목적:

제3자가 작성한 플러그인을 추가합니다. 예를 들어 nginx-sticky-module(이후 끈적이라고 함)을 사용합니다.

/usr/local/nginx/sbin/을 통해 nginx 설치된 모듈 보기 nginx -V

(권장 튜토리얼: nginx 튜토리얼)

sticky 모듈과 Ip_hash는 모두 로드 밸런싱 알고리즘과 관련되어 있지만 차이점은 다음과 같습니다.

1 요청을 다른 서버 기반으로 할당합니다. 클라이언트의 IP

2, 끈적함, 서버가 클라이언트에게 제공한 쿠키에 따라 클라이언트는 다시 요청할 때 이 쿠키를 가져오고 nginx는 이 쿠키와 함께 요청을 쿠키를 발행한 서버에 전달합니다

참고: LAN에는 3개가 있습니다. 각 컴퓨터에는 3개의 내부 IP가 있지만 요청을 시작하면 ip_hash 방법을 사용하는 경우 통신 사업자가 연결하는 라우터에 할당하는 외부 IP는 1개뿐입니다. , Nginx는 요청을 다른 IP 주소에 할당합니다. 업스트림 서버가 고정 모듈을 사용하는 경우 인트라넷 NAT 사용자의 균형을 달성하기 위해 쿠키 기반 서버에 요청을 할당합니다. 이것은 iphash가 할 수 없는 일입니다.

Sticky 작동 원리:

Sticky는 쿠키를 배포하고 식별함으로써 동일한 클라이언트의 요청이 동일한 서버에 속합니다. 명명된 경로:

1. 클라이언트는 처음으로 액세스 요청을 시작합니다. nginx는 이를 수신한 후 요청 헤더에 쿠키가 없음을 확인한 다음 폴링 방식으로 요청을 백엔드 서버에 배포합니다.

2. 백엔드 서버는 요청을 처리한 후 응답 데이터를 nginx로 반환합니다.

3. 이때 nginx는 경로가 포함된 쿠키를 생성하여 클라이언트에 반환합니다. Route 값은 일반 텍스트이거나 md5, sha1 등과 같은 해시 값일 수 있는 백엔드 서버에 해당합니다.

4 클라이언트는 요청을 수신하고 Route와 함께 쿠키를 저장합니다.

5. 클라이언트가 다음에 요청을 보낼 때 경로를 가져오고 nginx는 수신된 쿠키의 경로 값을 기반으로 해당 백엔드 서버로 전달합니다.

Sticky 공식 웹사이트 주소

공식 주소:

https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src

다운로드 주소:

wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz

Nginx install Sticky 모듈

#1.下载的文件上传,解压
tar -xvzf nginx-goodies-nginx-sticky-module-ng-08a395c66e42.tar

#2.重命名为nginx-sticky-module
mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42 /usr/local/nginx-sticky-module

#3.进入nginx源码目录进行编译
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-sticky-module --with-http_stub_status_module --with-http_ssl_module 

#4.安装
 1.停止nginx后进行安装:make && make install
 2.在线更新安装: make upgrade

./sbin/nginx -V를 통해 컴파일 매개변수를 확인하면 다음을 확인할 수 있습니다. 끈끈한 모듈이 nginx로 컴파일되었습니다

[root@bogon nginx]# ./sbin/nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --add-module=/usr/local/nginx-sticky-module --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

nginx.conf를 수정하고 끈끈한 기능을 활성화하세요

upstream zyi {
    #使用sticky,不设置expires则浏览器关闭时结束会话
    sticky domain=zy.csxiuneng.com path=/;
    server localhost:9001;
}

server {
     listen       80;
     server_name  zy.csxiuneng.com;
     access_log  logs/zy.access.log  main;
     location / {
        
         proxy_pass http://zyi;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $host;
         client_max_body_size 10m;
         client_body_buffer_size 256k;
         proxy_connect_timeout 90;
         proxy_send_timeout 90;
         proxy_buffer_size 4k;
         proxy_buffers 4 32k;
     }

sticky 구문:

sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] 
       [hash=index|md5|sha1] [no_fallback] [secure] [httponly];
    [name=route]       设置用来记录会话的cookie名称
    [domain=.foo.bar]    设置cookie作用的域名
    [path=/]          设置cookie作用的URL路径,默认根目录
    [expires=1h]        设置cookie的生存期,默认不设置,浏览器关闭即失效
    [hash=index|md5|sha1]   设置cookie中服务器的标识是用明文还是使用md5值,默认使用md5
    [no_fallback]       设置该项,当sticky的后端机器挂了以后,nginx返回502 (Bad Gateway or Proxy Error) ,而不转发到其他服务器,不建议设置
    [secure]          设置启用安全的cookie,需要HTTPS支持
    [httponly]         允许cookie不通过JS泄漏,没用过

Nginx 다시 시작: ./sbin/nginx -s reload

방문: zy.csxiuneng.com, 할 수 있습니다 쿠키에 항목이 있는지 확인하세요. 항목은 Route

nginx는 타사 모듈을 추가합니다.

참고:

1. 동일한 클라이언트가 시작 중에 동시에 여러 요청을 시작하는 경우 다른 백엔드 서버에 속할 수 있습니다
2. 쿠키는 처음에 서버에서 발행되며 클라이언트가 쿠키를 비활성화하면 쿠키가 적용되지 않습니다.
3. 클라이언트는 쿠키를 가져올 수 없습니다. Android 클라이언트는 일반적으로 모든 쿠키를 가져오지 않습니다. 로드 밸런싱을 위해 고정을 사용하려면 Android 개발에 쿠키를 추가하십시오.
4. 쿠키 이름은 회사에서 사용하는 쿠키 이름과 동일해서는 안 됩니다. Sticky의 기본 쿠키 이름은 경로이며 어떤 값으로도 변경할 수 있습니다
5. 클라이언트가 보낸 첫 번째 요청에는 쿠키가 포함되지 않습니다. 서버에서 발행한 쿠키는 클라이언트의 다음 요청에만 적용됩니다.
6.Nginx 고정 모듈은 ip_hash와 동시에 사용할 수 없습니다.

여러 타사 모듈을 추가하려면 여러 --add-module 지침을 사용하세요.

./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-sticky-module/ --add-module=/usr/local/nginx-http-concat-1.2.2/

위 내용은 nginx는 타사 모듈을 추가합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제