翼度科技»论坛 云主机 服务器技术 查看内容

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

13

主题

13

帖子

39

积分

新手上路

Rank: 1

积分
39
nginx反向代理


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

代理服务器实现
  1. location / {
  2.     proxy_pass http://139.199.32.236:8080
  3. }
复制代码
使用proxy_pass字段,后面是业务服务器.
每次访问服务器根目录时,自动找业务服务器获取数据

其他字段


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



nginx限速

保护磁盘IO


限速原理

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


限速实现


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


代码

1.limit_req_zone 限制请求数

    1. limit_req_zone
    复制代码
    限制请求数(限速)
    1. limit_req_conn
    复制代码
    限制连接数(访问数) 并发数

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

    1. limit_conn_zone;
    复制代码
    设置桶
    1. limit_conn addr 1;
    复制代码
    设置连接数
    1. limit_rate 100k;
    复制代码
    设置下载速率
nginx限速

保护磁盘IO
限速原理

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


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

1.limit_req_zone 限制请求数

    1. limit_req_zone
    复制代码
    限制请求数(限速)
    1. limit_req_conn
    复制代码
    限制连接数(访问数) 并发数

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

    1. limit_conn_zone;
    复制代码
    设置桶
    1. limit_conn addr 1;
    复制代码
    设置连接数
    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. }
复制代码
重写规则:
  1. rewrite 正则 替代内容 flag标记
复制代码
flag标记

    1. last
    复制代码
    :匹配后,进行向下执行后面的代码,不跳转
    1. break
    复制代码
    :匹配后中止,不执行后面代码
    1. redirect
    复制代码
    : 302临时重定向 搜索网站保存旧网站
    1. 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和()和{}之间都有空格
#注释

    1. $http_user_agent
    复制代码
    用户代理,用户浏览器类型
    1. $request_filename
    复制代码
    当前请求的文件路径名,由root或alias指令与URL请求生成
    1. $uri
    复制代码
    请求的不带请求参数的URL,可能和最初的值有不同,比如经过重定向之类的
    1. $http_host http
    复制代码
    地址

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/server/3309311m5.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具