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

 更新时间:2024年11月19日 09:10:02   作者:小青头  
文章主要介绍了Nginx的反向代理和正向代理的基本概念、应用场景、缓存服务器的使用以及限速保护的方法,同时,还详细讲解了Nginx的URL重写功能和一些常用的变量

nginx反向代理

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

代理服务器实现

location / {
    proxy_pass http://139.199.32.236:8080
}

使用proxy_pass字段,后面是业务服务器.

每次访问服务器根目录时,自动找业务服务器获取数据

其他字段

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

nginx限速

保护磁盘IO

限速原理

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

限速实现

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

代码

1.limit_req_zone 限制请求数

  • limit_req_zone 限制请求数(限速)
  • limit_req_conn 限制连接数(访问数) 并发数

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

limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    listen 80;
	server name localhost;
	location / {
	    root html;
		index index.html index.htm	
	}
	location /abc {
		limit_req zone=baism burst=5 nodelay;
		limit_conn addr 1;
		limit_rate 100k;
		limit_rate_after 100m;
	}
}

请求数不能超过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 限制连接数(访问数) 并发数

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

limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    listen 80;
	server name localhost;
	location / {
	    root html;
		index index.html index.htm	
	}
	location /abc {
		limit_req zone=baism burst=5 nodelay;
		limit_conn addr 1;
		limit_rate 100k;
		limit_rate_after 100m;
	}
}

请求数不能超过1个

下载到100m就会限速到100kb/s

  • limit_conn_zone; 设置桶
  • limit_conn addr 1;设置连接数
  • limit_rate 100k; 设置下载速率

nginx实现url重写rewrite

将用户在地址栏输入的地址重新编辑。

作用场景:域名变更、用户跳转、伪静态场景

重写指令

代码1

location /baism00 {
	rewrite ^(.*)$ http://192.168.10.129;
}

location /baism01 {
	rewrite ^(.*)$ http://192.168.10.129 break;
}

location /baism02 {
	rewrite ^(.*)$ http://192.168.10.129 redirect;
}

location /baism03 {
	rewrite ^(.*)$ http://192.168.10.129 permanent;
}

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

flag标记

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

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

代码2

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

rewrite 匹配内容 替换内容

匹配内容使用括号分组匹配

替换内容使用$1,$2代表匹配的内容

代码3

location / {
    root html;
    index index.html index.html;
    if ($http_user_agent ~* 'Chrome') {
        break;
        return 43;
        #return http://www.jd.com
    }
}

nginx匹配

  • 模糊匹配:~匹配 !~不匹配 ~*不区分大小写的匹配
  • 精确匹配 :=匹配 !=不匹配

注意:if和()和{}之间都有空格

#注释 

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

总结

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

相关文章

  • 详解Nginx与Apache共用80端口的配置方法

    详解Nginx与Apache共用80端口的配置方法

    这篇文章主要介绍了Nginx与Apache共用80端口的配置方法,当然如果想Nginx不与Apache抢80端口的话,本文后面也附带了Nginx的端口修改方法,需要的朋友可以参考下
    2016-01-01
  • 关于Nginx 命令行控制的问题

    关于Nginx 命令行控制的问题

    Nginx 是一个高性能的 Web 服务器,从 2001 年发展至今,由于 Nginx 对硬件和操作系统内核特性的深度挖掘,使得在保持高并发的同时还能够保持高吞吐量,这篇文章主要介绍了Nginx 命令行控制,需要的朋友可以参考下
    2022-10-10
  • Nginx配置支持IPV6地址的方法示例

    Nginx配置支持IPV6地址的方法示例

    本文主要介绍了如何搭建并测试Nginx以支持IPV6地址的过程,包括下载安装包、编译安装、配置和启动Nginx等步骤,同时,文章还解决了在测试IPV6地址时遇到的两个问题:curl解析错误和阿里云、腾讯云IPV6地址配置问题
    2024-11-11
  • Nginx geoip模块实现地区性负载均衡

    Nginx geoip模块实现地区性负载均衡

    相信做过awstats的都用过开源的geoip.dat ip数据库,刚好nginx wiki上有geoip 模块,这样就可以实现地区性的负载均衡,但是maxmind 的ip数据库对中国的支持不算太好,不过现在也不错了~
    2010-12-12
  • 教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

    教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

    这篇文章主要介绍了利用 Nginx 服务搭建子域环境提升二维地图加载性能,本文分步骤通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-09-09
  • Nginx代理到https地址忽略证书验证配置的实现

    Nginx代理到https地址忽略证书验证配置的实现

    在特定情况下,Nginx代理到HTTPS地址可能需要忽略证书验证,本文就来介绍一下如何实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • 将树莓派转身为强大的Web服务器如何使用Nginx和cpolar实现远程访问

    将树莓派转身为强大的Web服务器如何使用Nginx和cpolar实现远程访问

    这篇文章主要介绍了Nginx可视化管理工具结合cpolar实现远程访问内网服务,相比其他 Web 服务器,Nginx 的内存占用率非常低,可以在树莓派等资源受限的设备上运行,同时结合cpolar 内网穿透工具即可实现远程访问,需要的朋友可以参考下
    2023-09-09
  • Nginx出现504 Gateway Time-out的解决方法

    Nginx出现504 Gateway Time-out的解决方法

    nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,本文就来介绍一下解决方法,感兴趣的可以了解一下
    2023-10-10
  • Ubuntu系统下的Nginx服务器软件安装时的常见错误解决

    Ubuntu系统下的Nginx服务器软件安装时的常见错误解决

    这篇文章主要介绍了Ubuntu系统下的Nginx服务器软件安装时的常见问题解决,包括彻底卸载Nginx的方法介绍,需要的朋友可以参考下
    2016-03-03
  • Windows下Nginx+PHP5的安装与配置方法

    Windows下Nginx+PHP5的安装与配置方法

    Nginx 是一个轻量级的高性能 Http WebServer,以事件驱动方式编写,因此相比 Apache 而言,Nginx 更加稳定、性能更好,而且配置简单,资源占用较低。
    2010-06-06

最新评论