nginx http 에이전트, 부하 균형, tcp 에이전트 전송 설정

17878 단어 Nginx
nginx http 에이전트
  • nginx http 에이전트
  • proxy 통과 하기set_header, 프 록 시 호스트 ip 대신 클 라 이언 트 의 실제 IP 주소 와 포트 를 되 돌려 줍 니 다.
    #proxy  ngx       https, https     squid
    server {
        listen 9998;
    
        allow 192.168.0.0/24;
        deny all;
    
        location / {
            access_log /data/logs/proxy_access.log main;
            proxy_redirect off;
            proxy_pass http://$http_host$request_uri;
    
            proxy_set_header Host $host:$server_port;  #      :  IP:port
            proxy_set_header X-Real-IP $remote_addr;   #        IP
            proxy_set_header X-Real-PORT $remote_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_http_version 1.1;
        }
    }
  • nginx http 리 트 윗
  • server {
        listen 21000;
        server_name 127.0.0.1;
    
        location / {
            proxy_read_timeout 1800;
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://10.10.20.34:21000;
        }
    }
  • nginx 부하 균형
  • cat vhosts/down_fdfs_19080.conf 
    server {
        listen 19080;
        server_name 127.0.0.1;
    
        location / {
            proxy_read_timeout 1800;
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://down_fdfs;
        }
    }
    cat upstream/down_fdfs.conf 
    upstream down_fdfs{
        server    10.10.20.54:80   max_fails=2 fail_timeout=30s weight=10;
        server    10.10.20.55:80   max_fails=2 fail_timeout=30s weight=10;
    
        keepalive 64;
    }
  • url 과 일치 하여 서로 다른 호스트 로 전송
  • 여기 서 url 의 전환 에 대해 조금 이해 하기 어렵 습 니 다. 예 를 들 어 여러 개 / 등 입 니 다.proxypass 의 값, 호스트 를 제거 하면 남 습 니 다. "/" 여기 가 바로 "/ api test /" 를 "/" 로 바 꾸 는 것 입 니 다.이렇게 하면 url 과 일치 하 는 것 이 필요 한 지 아 닌 지 를 잘 알 수 있 습 니 다.
        location /api_test/ {
            default_type 'text/plain';
            proxy_buffering    off;
            proxy_set_header            Host $host;
            proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect              off;
            proxy_connect_timeout       10;
            proxy_send_timeout          30;
            proxy_read_timeout          30;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_pass                  http://api.system/;
        }
    
        upstream api.system{
            server    192.168.6.119:8901   max_fails=2  weight=1;
            keepalive 64;
        }
    

    2. nginx TCP 역방향 에이전트
    1. 관련 모듈 컴 파일
    TCP 프 록 시 와 부하 균형 을 지원 하 는 stream 모듈 ngx_stream_core_module 은 1.90 버 전 이후 에 사 용 됩 니 다.그러나 기본적으로 설치 되 지 않 습 니 다. 컴 파일 할 때 지정 한 – with - stream 인 자 를 통 해 이 모듈 을 활성화 해 야 합 니 다.
  • 저 버 전 nginx
  • 다음 작업 절 차 는 nginx 가 tcp 만 지원 하도록 합 니 다.proxy, prce, gzip, ssl 등 기능 을 추가 하지 않 았 습 니 다. 필요 하 다 면 자체 적 으로 컴 파일 할 때 관련 매개 변 수 를 추가 할 수 있 습 니 다.
    wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip
    unzip master.zip
    cd nginx-1.8.1
    patch -p1 <.. class="hljs-preprocessor">.patch
    ./configure  --add-module=../nginx_tcp_proxy_module-master
    make
    make install

    2. nginx tcp 에이전트 설정
    = = 주의: 새 버 전 키 워드 는 stream 이 고, 낮은 버 전 은 tcp = =
  • 새 버 전 nginx
  • stream {
        upstream backend {
            hash $remote_addr consistent;
            server backend1.example.com:12345 weight=5;
            server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
            server unix:/tmp/backend3;
        }
    
        server {
            listen 12345;
            proxy_connect_timeout 1s;
            proxy_timeout 3s;
            proxy_pass backend;
        }
    
        server {
            listen [::1]:12345;
            proxy_pass unix:/tmp/stream.socket;
        }
    }
  • 저 버 전 nginx
  • events { ...
    }
    http { ...
    }
    tcp {
        upstream backend {
            server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
        }
        server {
            listen 2345;
            proxy_pass backend;
        }
    }

    3. nginx tcp proxy 퍼 가기 시간 초과 문제
    = = nginx tcp proxy 연결 유지 설정 = =
    앞에서 Nginx tcp proxy module 시험 적 으로 사용 한 설정 에 따 르 면 테스트 환경 에서 tcp 연결 이 자주 끊 기 는 것 을 발견 했다.사실은 몇 개의 설정 이 없어 서 README 의 설정 은 생산 환경 에 사용 할 수 없다.설정 은 다음 과 같 습 니 다. 현재 작업 이 정상 입 니 다.
    tcp {
        timeout 1d;
        proxy_read_timeout 10d;
        proxy_send_timeout 10d;
        proxy_connect_timeout 30;
    
        # rsync
        upstream proxy_rsync {
            server 10.10.20.42:30873 max_fails=3;
        }
        server {
            listen 30888;
            proxy_pass proxy_rsync;
        }
    }

    이 출처 를 반드시 보관 하 십시오:http://blog.csdn.net/fgf00/article/details/79276127
    첨부: nginx 최적화 프로필 참조
    주: 마지막 몇 줄 의 tcp 부분 을 컴 파일 하지 않 으 면 설명 할 수 있 습 니 다.
    user  nginx nginx;
    worker_processes  24;
    worker_cpu_affinity auto;
    
    worker_rlimit_nofile 65535;
    
    error_log  /data/logs/nginx/error.log  notice;
    
    pid        logs/nginx.pid;
    
    events {
        use epoll;
        multi_accept on;
        worker_connections  65535;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        charset  UTF-8;
    
        server_names_hash_bucket_size 128;
        client_header_buffer_size 128k;
        large_client_header_buffers 8 128k;
        client_max_body_size 20g;
    
        sendfile        on;
        tcp_nopush     on;
        open_file_cache max=51200 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 1;
    
        keepalive_timeout  60;
    
        tcp_nodelay on;
    
        server_tokens off;
        server_tag off;
        server_info off;
    
        fastcgi_connect_timeout 600;
        fastcgi_send_timeout 600;
        fastcgi_read_timeout 600;
        fastcgi_buffer_size 512k;
        fastcgi_buffers 16 256k;
        fastcgi_busy_buffers_size 512k;
        fastcgi_temp_file_write_size 512k;
        fastcgi_intercept_errors on;
    
        client_header_timeout  6m;
        client_body_timeout    6m;
        send_timeout           6m;
        connection_pool_size        256;
        request_pool_size        8k;
        output_buffers   8 64k;
        postpone_output  1460;
        client_body_buffer_size    1024k;
    
        gzip  on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.0;
        gzip_comp_level 3;
        gzip_proxied    any;
        gzip_types       text/plain application/x-javascript application/json text/css application/xml;
        gzip_vary on;
    
        proxy_connect_timeout       600;
        proxy_read_timeout          600;
        proxy_send_timeout          600;
        proxy_buffers               4 64k;
        proxy_busy_buffers_size     128k;
        proxy_temp_file_write_size  128k;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_ignore_client_abort on;
        proxy_next_upstream error;
        proxy_buffer_size 64k;
        proxy_temp_path   /dev/shm/nginx_proxy_temp;
        proxy_cache_path  /dev/shm/proxy_cps_cache levels=1:2 keys_zone=cache_cps:1024m inactive=2d max_size=8g;
        proxy_cache_path  /dev/shm/proxy_cpsSimhash_cache levels=1:2 keys_zone=cache_cpsSimhash:1024m inactive=2d max_size=8g;
        proxy_cache_path  /dev/shm/proxy_search_cache levels=1:2 keys_zone=cache_search:1024m inactive=2d max_size=8g;
        proxy_pass_header  Set-Cookie;
    
        log_format main '$http_host $remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" "$http_user_agent" '
                        '"$http_x_forwarded_for" "$upstream_cache_status" $request_time $host';
    
        include upstream/*.conf;
        include vhosts/*.conf;
    }
    
    tcp {
        timeout 1d;
        proxy_read_timeout 10d;
        proxy_send_timeout 10d;
        proxy_connect_timeout 30;
    
        include tcp_proxy/*.conf;
    }

    이 출처 를 반드시 보관 하 십시오:http://blog.csdn.net/fgf00/article/details/79276127

    좋은 웹페이지 즐겨찾기