提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助檔案
nginx代理服務
- 前言
- 一. 代理緩沖服務器(HTTP協議轉發)
- 二. 代理緩沖服務器(TCP、UDP協議轉發)
- 三. 代理快取服務器
前言
nginx除了做靜態頁面之后,運用最廣泛的就是作為代理服務,
Nginx Proxy服務器:
正向代理:內網客戶機通過代理訪問互聯網,通常要設定代理服務器地址和埠,
反向代理:外網用戶通過代理訪問內網服務器,用戶無感知,內網服務器無感知,
一. 代理緩沖服務器(HTTP協議轉發)
ngx_http_proxy_module
Syntax: proxy_pass URL; # 代理的后端服務器URL
Default: —
Context: location, if in location, limit_except
緩沖區
Syntax: proxy_buffering on | off;
Default: proxy_buffering on; # 緩沖開關
Context: http, server, location
注:proxy_buffering開啟的情況下,nignx會把后端回傳的內容先放到緩沖區當中,然后再回傳給客戶端(邊收邊傳,不是全部接收完再傳給客戶端),
Syntax: proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k; # 緩沖區大小
Context: http, server, location
Syntax: proxy_buffers number size;
Default: proxy_buffers 8 4k|8k; # 緩沖區數量
Context: http, server, location
Syntax: proxy_busy_buffers_size size;
Default: proxy_busy_buffers_size 8k|16k; # 忙碌的緩沖區大小,控制同時傳遞給客戶端的buffer數量
Context: http, server, location
頭資訊
Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host; # 設定真實客戶端地址
????proxy_set_header Connection close;
Context: http, server, location
超時
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s; # 連接超時
Context: http, server, location
Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location
Syntax: proxy_send_timeout time; # nginx行程向fastcgi行程發送request的整個程序的超時時間
Default: proxy_send_timeout 60s;
Context: http, server, location
準備一臺nginx服務器 作為代理服務器 (在server{}下)
location / {
proxy_pass http://192.168.93.136;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
}
通過訪問proxy來訪問web server
查看日志:
192.168.93.137 - - [19/Nov/2018:17:55:12 +0800] "GET /favicon.ico HTTP/1.0" 404 266 "-"
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0" "192.168.93.1"
其中:
192.168.93.137 為代理服務器的ip地址
192.168.93.1 為客戶端的ip地址
二. 代理緩沖服務器(TCP、UDP協議轉發)
–with-stream
注:要求nginx版本大于1.9,且必須在nginx.conf里面配置(與http同級),在conf.d目錄下配置無效,
詳細配置(stream模塊):
[root@php-fpm conf]# cat nginx.conf |egrep -v "^$|^[\t ]*#"
user root;
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream ssh_proxy130 {
server 10.7.7.130:22 max_fails=3 fail_timeout=30s;
}
upstream ssh_proxy131 {
server 10.7.7.131:22 max_fails=3 fail_timeout=30s;
}
server {
listen 10130; # 訪問10130埠,轉發到ssh_proxy130,也就是轉發到10.7.7.130:22
proxy_pass ssh_proxy130;
}
server {
listen 10131; # # 訪問10131埠,轉發到ssh_proxy131,也就是轉發到10.7.7.131:22
proxy_pass ssh_proxy131;
}
}
http {
include mime.types;
include /root/proxy/nginx/conf.d/*.conf;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
三. 代理快取服務器
ngx_http_proxy_module
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=proxy_cache:10m max_size=10g inactive=60m use_temp_path=off;
引數解釋:
proxy_cache_path 快取檔案路徑
levels 設定快取檔案目錄層次;levels=1:2 表示兩級目錄
keys_zone 設定快取名字和共享記憶體大小
proxt_cache 定義的名字
inactive 在指定時間內沒人訪問則快取被洗掉
max_size最大快取空間,如果快取空間滿,默認覆寫掉快取時間最長的資源,
Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location
快取過期
Syntax: proxy_cache_valid [code …] time;
Default: —
Context: http, server, location
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
快取維度
Syntax: proxy_cache_key string;
Default: proxy_cache_key**
s
c
h
e
m
a
schema
schemaproxy_host$request_uri**;
Context: http, server, location
http {
...
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=proxy_cache:10m max_size=10g inactive=60m use_temp_path=off;
...
}
location / {
...
proxy_cache proxy_cache; # 名字 對應http模塊中定義的
proxy_cache_valid 200 304 12h; # 對200 304界面 快取12個小時
proxy_cache_valid any 10m; # 除了上面的其他都快取10分鐘
proxy_cache_key $host$uri$is_args$args; # 定義key 通過唯一key來進行hash存取
add_header Nginx-Cache "$upstream_cache_status"; # 可以在瀏覽器中http中體現
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; # 如果回傳錯誤 就下跳另一臺web服務器
...
}
創建定義的快取檔案
mkdir -p /data/nginx/cache
在瀏覽器訪問代理快取服務器(創建一個新的頁面 防止原有的快取)
訪問成功之后 進入開發者模式 查看回應頭
Nginx-Cache: MISS 未命中 新頁面第一次訪問都是MISS
Nginx-Cache: HIT 命中 重繪頁面 變成HIT 說明已經快取
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/306402.html
標籤:其他
上一篇:Nginx 服務--虛擬主機
