Ubuntu nginx 역방향 에이전트

13004 단어 Ubuntulinux
Ubuntu nginx 역방향 에이전트
1. nginx 역방향 프 록 시 단일 서버
root@youyou:/apps/nginx/conf.d# cat test.conf 
server{
	server_name www.xiapi.com;
	listen	80;
	access_log /apps/nginx/logs/xiapi_access.log;
        error_log  /apps/nginx/logs/xiapi_error.log;
        error_page  404              /no.html;
	server_tokens off;
	location /no.html {
		root /data/html;
	}
	location / {
		proxy_pass http://192.168.19.33;	
	}	 

}
root@youyou:/apps/nginx/conf.d# 
root@youyou:/apps/nginx/conf.d# nginx -s reload
root@youyou:/apps/nginx/conf.d# curl 192.168.19.30
192.168.19.33 nginx

2. nginx 역방향 프 록 시 부분 디 렉 터 리
root@youyou:/apps/nginx/conf.d# cat test.conf 
server{
	server_name www.xiapi.com;
	listen	80;
	access_log /apps/nginx/logs/xiapi_access.log;
        error_log  /apps/nginx/logs/xiapi_error.log;
        error_page  404              /no.html;
	server_tokens off;
	location /no.html {
		root /data/html;
	}
	location / {
		proxy_pass http://192.168.19.33;	
	}	 
	location /web {
		proxy_pass http://192.168.19.32/;
	}

}
root@youyou:/apps/nginx/conf.d# 
root@youyou:/apps/nginx/conf.d# nginx -s reload
root@youyou:/apps/nginx/conf.d# curl 192.168.19.30/web/
192.168.19.32  apache
root@youyou:/apps/nginx/conf.d# curl 192.168.19.30
192.168.19.33 nginx
root@youyou:/apps/nginx/conf.d#

#             web  
root@youyou:/var/www/html# mkdir web
root@youyou:/var/www/html# cp index.html web/.


3. nginx 캐 시 기능
http 코드 블록 에서 캐 시 정 보 를 정의 합 니 다. 한 줄 입 니 다.
proxy_cache_path /data/nginx/proxy_cache #        ,proxy_cache     
levels=1:2:2 #          ,1:2:2    2^4x2^8x2^8=1048576   
keys_zone=proxycache:20m #         ,      key metadata( :    )
inactive=120s; #      
max_size=1g; #        ,                
#          /var/cache/nginx    

location 에서 호출
root@youyou:/apps/nginx/conf.d# vi test.conf 
        location /web {
                proxy_pass http://192.168.19.32;
                proxy_set_header clientip $remote_addr;
                proxy_cache proxycache;
                proxy_cache_key $request_uri;
                proxy_cache_valid 200 302 301 1h;
                proxy_cache_valid any 1m;
        }
root@youyou:/apps/nginx/conf.d# ll /data/nginx/
total 12
drwxr-xr-x 3 root   root 4096 Jan  8 12:25 ./
drwxr-xr-x 5 root   root 4096 Jan  8 12:25 ../
drwx------ 3 nobody root 4096 Jan  8 12:25 proxycache/
root@youyou:/apps/nginx/conf.d# ll /data/nginx/proxycache/
total 12
drwx------ 3 nobody root    4096 Jan  8 12:25 ./
drwxr-xr-x 3 root   root    4096 Jan  8 12:25 ../
drwx------ 3 nobody nogroup 4096 Jan  8 12:25 4/
root@youyou:/apps/nginx/conf.d#

4. nginx 역방향 에이전트 머리 정보 추가
nginx 기반 모듈 ngxhttp_headers_module 는 머리 메시지 에 지정 한 key 와 값 을 추가 할 수 있 습 니 다.
        location /web {
                proxy_pass http://192.168.19.32;
                proxy_set_header clientip $remote_addr;
                proxy_cache proxycache;
                proxy_cache_key $request_uri;
                proxy_cache_valid 200 302 301 1h;
                proxy_cache_valid any 1m;
                add_header X-Via $server_addr;
                add_header X-Cache $upstream_cache_status;
                add_header X-Accel $server_name;
        }

root@youyou:/apps/nginx/conf.d# curl -I 192.168.19.30/web/index.html
HTTP/1.1 200 OK
Server: xiapi
Date: Wed, 08 Jan 2020 12:31:42 GMT
Content-Type: text/html
Content-Length: 22
Connection: keep-alive
Last-Modified: Wed, 08 Jan 2020 12:18:43 GMT
ETag: "16-59b9fe4baf8d7"
X-Via: 192.168.19.30
X-Cache: HIT
#       ,   miss      
X-Accel: www.xiapi.com
Accept-Ranges: bytes

root@youyou:/apps/nginx/conf.d# 


5. nginx 역방향 프 록 시 여러 대의 웹 서버
    이전 장 에서 Nginx 는 클 라 이언 트 의 요청 을 단일 백 엔 드 서버 로 전송 할 수 있 으 나 특정한 서버 로 전송 할 수 없고 백 엔 드 서버 에 해당 하 는 서버 상태 모니터링 을 제공 할 수 없 지만 Nginx 는 ngx 를 기반 으로 할 수 있 습 니 다.http_upstream_모듈 모듈 은 서버 그룹 전송, 권한 재분배, 상태 모니터링, 스케줄 링 알고리즘 등 고급 기능 을 제공 하고 공식 문서:https://nginx.org/en/docs/http/ngx_http_upstream_module. html 스케줄 링 알고리즘
hash KEY consistent;
#    key hash  ,  consistent  ,   ketama   hash  ,      Cache   
( varnish)   ,consistent       hash  ,   hash      。
hash $request_uri consistent; 
#       uri hash
ip_hash;
#   hash    ,       remote_addr(   ) hash  ,       ,
least_conn;
#        ,                       

서버 옵션
server address [parameters];
#      web   ,   upstream ,      server     。
#server   parameters  :
weight=number #    ,   1。
max_conns=number #   server         ,   0      。
max_fails=number #                      。
fail_timeout=time #               ,   10 。
backup #        ,                   。
down #   down  。
resolve # server          , A            IP     Nginx。

범례: 호스트 이름 이 다 똑 같 습 니 다. 사실은 다른 서버 에 있 습 니 다.
root@youyou:/apps/nginx/conf.d# cat test.conf 
upstream webserver {
	least_conn;
	server 192.168.19.32:80 weight=1 fail_timeout=5s max_fails=3;
	server 192.168.19.33:80 weight=1 fail_timeout=5s max_fails=3;
}
server{
	server_name www.xiapi.com;
	listen	80;
	access_log /apps/nginx/logs/xiapi_access.log;
        error_log  /apps/nginx/logs/xiapi_error.log;
        error_page  404              /no.html;
	server_tokens off;
	location /no.html {
		root /data/html;
	}
	location / {
		proxy_pass http://webserver/;
		index index.html;
	}	 

}
root@youyou:/apps/nginx/conf.d# 
root@youyou:/apps/nginx/conf.d# nginx -s reload
#   
root@youyou:~# curl 192.168.19.30
192.168.19.32  apache
root@youyou:~# curl 192.168.19.30
192.168.19.33 nginx
root@youyou:~# curl 192.168.19.30
192.168.19.32  apache
root@youyou:~# curl 192.168.19.30
192.168.19.33 nginx
#   Apache     
root@youyou:~# systemctl stop apache2.service 
root@youyou:~# 
root@youyou:~# curl 192.168.19.30
192.168.19.33 nginx
root@youyou:~# curl 192.168.19.30
192.168.19.33 nginx
root@youyou:~# curl 192.168.19.30
192.168.19.33 nginx
root@youyou:~# curl 192.168.19.30
192.168.19.33 nginx
root@youyou:~# 


6. nginx 역방향 프 록 시 클 라 이언 트 ip 투과
  • nginx 는 머리 정 보 를 추가 하여 백 엔 드 서버 로 전송 합 니 다
  •         location / {
            proxy_pass http://webserver/;
            proxy_set_header youyou $proxy_add_x_forwarded_for;
            index index.html;
    }
    
  • 백 엔 드 서버 로그 수정 로그 에 이 youyou 필드 추가
  • LogFormat "\"%{youyou}i\" %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
    
  • 효과 보기
  • root@youyou:~# tail -5 /var/log/apache2/access.log 
    192.168.19.30 - - [09/Jan/2020:02:49:30 +0000] "GET / HTTP/1.0" 200 268 "-" "curl/7.58.0"
    192.168.19.30 - - [09/Jan/2020:02:53:04 +0000] "GET / HTTP/1.0" 200 268 "-" "curl/7.58.0"
    192.168.19.30 - - [09/Jan/2020:02:53:05 +0000] "GET / HTTP/1.0" 200 268 "-" "curl/7.58.0"
    "192.168.19.31" 192.168.19.30 - - [09/Jan/2020:02:55:10 +0000] "GET / HTTP/1.0" 200 268 "-" "curl/7.58.0"
    "192.168.19.31" 192.168.19.30 - - [09/Jan/2020:02:55:10 +0000] "GET / HTTP/1.0" 200 268 "-" "curl/7.58.0"
    root@youyou:~# 
    

    7. nginx 4 층 에이전트
    파일 을 포함 하려 면 http 와 같은 단계 가 필요 합 니 다.
    root@youyou:/apps/nginx# vi conf/nginx.conf
    events {
        worker_connections  1024;
    }
    
    include /apps/nginx/test2.conf;
    
    http {
    root@youyou:/apps/nginx# cat test2.conf 
    stream {
    	upstream mysql {
    		least_conn;
    		server 192.168.19.31:3306 max_fails=3 fail_timeout=30s;
    	}
    	server {
    		listen 192.168.19.30:3306;
    		proxy_connect_timeout 6s;
    		proxy_timeout 15s;
    		proxy_pass mysql;
    	}
    }
    root@youyou:/apps/nginx# 
    root@youyou:/apps/nginx# mysql -h192.168.19.30 -uroot -p
    Enter password: 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 56
    Server version: 10.1.43-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MariaDB [(none)]> exit
    Bye
    
    

    좋은 웹페이지 즐겨찾기