nginx配置(反向代理、限速、url重写)

清疚 2023-07-07 08:46 31阅读 0赞

nginx反向代理

正向代理:代理用户上网,当多个用户访问一个网站时,服务器只需要缓存一份即可
反向代理:代理服务器,以虚拟主机方式,一个ip对应多个主机
应用场景:堡垒机场景,内网服务器发布场景,缓存场景
CDN缓存服务器:缓存静态数据,动态请求由缓存服务器当代理服务器向业务服务器拿,减小业务服务器压力

代理服务器实现

  1. location / {
  2. proxy_pass http://139.199.32.236:8080
  3. }

使用proxy_pass字段,后面是业务服务器.
每次访问服务器根目录时,自动找业务服务器获取数据

其他字段

format_png

请求头,业务服务器可以从代理服务器上看到客户端信息
format_png 1

nginx限速

保护磁盘IO

限速原理

缓存请求、匀速处理、多余请求直接丢弃

限速实现

limit_req_zone:用来限制单位时间内的请求数,即速率限制
limit_req_conn:用来限制同一时间连接数,即并发限制

代码

1.limit_req_zone 限制请求数
limit_req_zone 限制请求数(限速)
limit_req_conn 限制连接数(访问数) 并发数
format_png 2
format_png 3

2.限制下载个数和下载速度

  1. limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
  2. limit_conn_zone $binary_remote_addr zone=addr:10m;
  3. server {
  4. listen 80;
  5. server name localhost;
  6. location / {
  7. root html;
  8. index index.html index.htm
  9. }
  10. location /abc {
  11. limit_req zone=baism burst=5 nodelay;
  12. limit_conn addr 1;
  13. limit_rate 100k;
  14. limit_rate_after 100m;
  15. }
  16. }

请求数不能超过1个
下载到100m就会限速到100kb/s
limit_conn_zone; 设置桶
limit_conn addr 1;设置连接数
limit_rate 100k; 设置下载速率

nginx限速

保护磁盘IO

限速原理

缓存请求、匀速处理、多余请求直接丢弃

限速实现

limit_req_zone:用来限制单位时间内的请求数,即速率限制
limit_req_conn:用来限制同一时间连接数,即并发限制

代码

1.limit_req_zone 限制请求数
limit_req_zone 限制请求数(限速)
limit_req_conn 限制连接数(访问数) 并发数
format_png 2
format_png 3

2.限制下载个数和下载速度

  1. limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
  2. limit_conn_zone $binary_remote_addr zone=addr:10m;
  3. server {
  4. listen 80;
  5. server name localhost;
  6. location / {
  7. root html;
  8. index index.html index.htm
  9. }
  10. location /abc {
  11. limit_req zone=baism burst=5 nodelay;
  12. limit_conn addr 1;
  13. limit_rate 100k;
  14. limit_rate_after 100m;
  15. }
  16. }

请求数不能超过1个
下载到100m就会限速到100kb/s
limit_conn_zone; 设置桶
limit_conn addr 1;设置连接数
limit_rate 100k; 设置下载速率

nginx实现url重写rewrite

将用户在地址栏输入的地址重新编辑。
作用场景:域名变更、用户跳转、伪静态场景

重写指令

代码1

  1. location /baism00 {
  2. rewrite ^(.*)$ http://192.168.10.129;
  3. }
  4. location /baism01 {
  5. rewrite ^(.*)$ http://192.168.10.129 break;
  6. }
  7. location /baism02 {
  8. rewrite ^(.*)$ http://192.168.10.129 redirect;
  9. }
  10. location /baism03 {
  11. rewrite ^(.*)$ http://192.168.10.129 permanent;
  12. }

重写规则:rewrite 正则 替代内容 flag标记
flag标记

  • last:匹配后,进行向下执行后面的代码,不跳转
  • break:匹配后中止,不执行后面代码
  • redirect: 302临时重定向 搜索网站保存旧网站
  • permanent:301永久重定向 搜索网站保存新网站

使用正则匹配,注意rewrite匹配字符是 目录全部内容,不是location匹配后剩下的内容

代码2

  1. location /html {
  2. rewrite /html/(.*)$ /post/$1 permanent;
  3. }

rewrite 匹配内容 替换内容
匹配内容使用括号分组匹配
替换内容使用$1,$2代表匹配的内容

代码3

  1. location / {
  2. root html;
  3. index index.html index.html;
  4. if ($http_user_agent ~* 'Chrome') {
  5. break;
  6. return 43;
  7. #return http://www.jd.com
  8. }
  9. }

nginx匹配
模糊匹配:~匹配 !~不匹配 ~*不区分大小写的匹配
精确匹配 :=匹配 !=不匹配
注意:if和()和{}之间都有空格
#注释
$http_user_agent 用户代理,用户浏览器类型
$request_filename 当前请求的文件路径名,由root或alias指令与URL请求生成
$uri 请求的不带请求参数的URL,可能和最初的值有不同,比如经过重定向之类的
$http_host http 地址

发表评论

表情:
评论列表 (有 0 条评论,31人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Nginx配置反向代理

    一、前言 反向代理作用 隐藏服务器信息 -> 保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网 举例