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 투과
location / {
proxy_pass http://webserver/;
proxy_set_header youyou $proxy_add_x_forwarded_for;
index index.html;
}
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PowerShell 기반 Ubuntu 시스템 사용 상세 정보본고는 주로 Ubuntu 16.04 LTS에 PowerShell을 설치하고 사용하는 방법을 소개한다.PowerShell Core는 마이크로소프트가 내놓은 크로스 플랫폼(Windows, Linux, macOS) 자동화...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.