Linux学习-Nginx之http_proxy_module

news/2024/7/7 21:47:38 标签: nginx, linux, http
http://www.w3.org/2000/svg" style="display: none;">

https://nginx.org/en/docs/http/ngx_http_proxy_module.html">http_proxy_module

https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass">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

http://www.niftyadmin.cn/n/1258540.html

相关文章

sql查删更

//查询#SELECT * FROM user_cawefwfrd where usewwr_cawrqqd_qaid2252227//删除#DELETE FROM user_cauyuyurd where uwwid10122255//更新#update uuuuser set thumb000.jpg where uiwwd10122222255; 转载于:https://www.cnblogs.com/914556495wxkj/p/5997513.html

Linux学习-HaProxy代理后端Nginx

代理作用:web缓存(加速),反向代理、内容路由(根据流量及内容类型将请求转发至特定服务器),转码器 缓存作用:减少冗余内容传输,节省带宽、缓解网络瓶颈,降低对原始服务器压力,降低传输延迟 Hap…

maven 打包时,src/main/java目录下的xml等资源文件没有打包进去的问题

工作中,给同事调试maven的自动化打包时,发现src/main/java中一些关于mybatis的xml都没有打包进去,导致war包启动不起来,在此记录一下,解决方法。 默认maven在src/main/java中只编译java文件,其他的文件会被…

id选择器、类选择器、属性选择器

在网页编辑时,通常要对样式进行各种设置。我们借助CSS样式设计中的选择器,就能很好很方便的对它们进行管理和设置了。 今天,跟大家分享一下几个常用的选择器:id选择器、类选择器、属性选择器。 id选择器:为标有特定“i…

jQuery中防止重复绑定事件的问题

在工作当中,有这样的场景,对于一个按钮,在某些条件下,属于可点击状态,在另一些条件下,属于不可点击状态,可能我们就会通过jQuery动态的绑定事件,解绑事件,但此时&#xf…

【 js 工具 】如何使用Git上传本地项目到github?(mac版)

在此假设你已经在 github 上创建好了一个项目,像这样: 并且你已经完成了自己的项目代码, 同时你也已经安装了 git,然后 lets start. 首先,建一个文件夹比如文中演示的是 微信小程序 文件夹,然后打开的你的终…

springmvc配置servlet的注意事项

今天用springmvc搭建项目时&#xff0c;遇到了一个以前没有注意到的问题&#xff0c;在此记录一下。 问题描述 web.xml&#xff08;部分配置&#xff09; <welcome-file-list>welcome-file>/index.jsp</welcome-file> </welcome-file-list><!-- sprin…

ASCII,Unicode和UTF-8

1. ASCII码 我们知道&#xff0c;在计算机内部&#xff0c;所有的信息最终都表示为一个二进制的字符串。每一个二进制位&#xff08;bit&#xff09;有0和1两种状态&#xff0c;因此八个二进制位就可以组合出256种状态&#xff0c;这被称为一个字节&#xff08;byte&#xff09…