Linux学习-Nginx之http_proxy_module

http_proxy_module
proxy_pass
#将请求转发至本机的8000端口,并设置http请求头的Host和X-Real-IP
location / {
    proxy_pass       http://localhost:8000;
    #设置请求头,$host,$remote_addr--变量
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}
#当客户机访问http://192.168.88.101/bbs/时会将请求代理至后端http://192.168.88.102/bbs/地址
 location /bbs/ {
            proxy_pass  http://192.168.88.102/bbs/;
        }
#当客户机访问http://192.168.88.101/forum/时会将请求代理至后端http://192.168.88.102/bbs/地址
location /forum/ {
            proxy_pass  http://192.168.88.102/bbs/;
        }
#当客户机访问http://192.168.88.101/a.txt时将请求代理至后端http://192.168.88.102/a.txt
location ~* \.txt$ {
			#注:location模式匹配中使用了正则,则下面http://192.168.88.102后不能再加任何信息,否则会视为语法错误,模式中使用了什么会自动添加至http://192.168.88.102后进行响应
           proxy_pass http://192.168.88.102;
        }
#当客户机访问http://192.168.88.101/bbs/时将请求代理至http://192.168.88.102/bbs/
location /bbs {
            proxy_pass  http://192.168.88.102;
            }
#当客户机访问http://192.168.88.101/bbs/时将请求代理至http://192.168.88.102/
location /bbs {
            proxy_pass  http://192.168.88.102/;
            }

#将请求代理至192.168.88.102
location / {
            proxy_pass  http://192.168.88.102;
        }
#查看102服务器nginx访问日志,记录通过101的主机访问记录
192.168.88.101 - - [07/May/2022:22:40:22 +0000] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 OPR/85.0.4341.75 (Edition B2)"
192.168.88.101 - - [07/May/2022:22:40:22 +0000] "GET /favicon.ico HTTP/1.0" 404 555 "http://192.168.88.101/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 OPR/85.0.4341.75 (Edition B2)"
#修改代理服务器的配置信息
location / {
            proxy_pass  http://192.168.88.102;
            #root   html;
            #index  index.html index.htm;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;

        }
#修改后端主机的记录日志格式(注:记录日志时代理服务器使用X-Real-IP,后端服务器需要使用http_x_real_ip来获取值)
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                      '"$host" "$http_x_real_ip"';
access_log  logs/access.log  main;
Nginx缓存

Nginx缓存的键(key)是存储在内存中,值(value)存储在磁盘中

#proxy_cache_path:设置缓存存储目录,levels中1表示1级子目录使用1个字符,:2表示二级子目录使用两个字符
#key_zone : 设置共享内存区,在共享内存中设置一块存储区域来存放缓存的key字符串,这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key
#max_size:定义缓存的上限,如果不指定,允许缓存不断增长,占用所有磁盘空间,当缓存达到设定的值,处理器便调用cache manager来移除最近最少使用的文件
#inactive指定了项目在不被访问的情况下能够在内存中保持的时长
#proxy_cache_path只能定义到http上下文中
proxy_cache_path /tmp/nginx/cache levels=1:2 inactive=60s keys_zone=mycache:10m max_size=10g;
#proxy_cache_methods GET | HEAD | POST ...----定义用户在使用相应方法请求时才进行缓存,默认GET HEAD
#proxy_cache_min_uses number;        请求被请求number次被缓存,默认为1
#proxy_cache_purge string ...
#proxy_cache_revalidate on | off; ---过期后重新校验
#proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | off ...;----陈旧总比没有好,当无法从原始服务器获取最新的内容数据时,Nginx可以分发缓存中的陈旧内容,这种情况一般发生在关联缓存内容的原始服务器宕机或者繁忙时,比起对客户端传达错误信息,nginx可以发送在其内存中的陈旧文件
#proxy_cache_valid [code ...] time;按时间定义不同响应码的缓存时长
#proxy_connect_timeout time;定义连接后端服务器的连接时长
#proxy_hide_header:隐藏由proxy响应至客户端时的报文首部

#在proxy服务器http上下文中添加以下行,配置缓存
proxy_cache_path /tmp/nginx/cache levels=1:2 inactive=60s keys_zone=mycache:10m max_size=10g;
#在server上下文中添加以下信息,开启缓存
location /bbs {
            proxy_cache mycache;
            proxy_cache_valid 200 1d;
            proxy_cache_valid 301 302 10m;
            proxy_cache_valid any 1m;
            proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_404;
            proxy_pass  http://192.168.88.102/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
#查看生成的缓存内容信息
[root@ds 20]# pwd
/tmp/nginx/cache/1/20
[root@ds 20]# ls
226fc74dfed270acecd54c0f0ecf0201
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值