为什么不用php或者其他解析服务器来判断,要用web服务器,费力不讨好,没有服务解析只有html更简单,直接访问就好。
可以,去看下nginx重写,要自己写重写规则,根据url不同访问文件不同返回数据不同,
关键字“url重写” “伪静态”
根据url参数代理到不同的虚拟主机中
TIP:正向代理、反向代理以及url重写
url为: >
nginx中location对url匹配;
语法:location [=| | |^~] /uri/ { … }
当匹配中符合条件的location,则执行内部指令;如果使用正则表达式,必须使用 表明不区分大小写或者 区分大小写匹配;例如:location ~ (gif|jpg|jpeg)$ ;当配皮成功后,将停止往下匹配;如果没有找到,则使用常规自字符串处理结果;
如果不是用正则表达式;可使用=严格匹配;
如果使用^~前缀用于一个常规字符串;表示如果路径匹配,则不测试正则表达式;
总结:指令按下列顺序被接受
1:=前缀的指令严格匹配这个查询;如果找到停止往下匹配
2:挣下的常规字符串,长的在前,如果这个匹配使用^~前缀,匹配停止;
3:正则表达式,按配置文件的顺序;
4:如果第三步产生匹配。则使用这个结果;停止匹配;否则使用第二部的匹配结果;
四个案例:
八个location案例
当匹配成功后location中可以使用rewrite进行路由重写;
首先需要了解nginx rewrite中可以使用到的全局变量;
$args:请求中get的参数,例如a=1&b=2;
$body_remote_add:二进制客户地址
$body_byte_sent:相应时发送出去的body字节数数量,即使链接中断这个数据也是精确的;
$content_length:请求头中的Content_length字段
$content_type:请求中的Content_type字段
$document_root:当前请求在root指令中的位置;服务器中绝对路径
$document_url:与uri相同
$host:请求主机头字段,否则为服务器名称;
$hostname:保存了当前请求中不包含指令的uri,例如: >
nginx可以区分get请求。步骤如下:
1、最直观的区别就是GET把参数包含在URL中,nginx通过requestbody传递参数。
2、GET用于从服务器端获取数据,包括静态资源、动态数据展示,nginx用于向服务器提交数据,增删改数据,提交一个表单新建一个用户、或修改一个用户。
3、默认对于nginx的accesslog,会自动记录get或post的完整URL,包括其中带的参数。
-user USERNAME [GROUP]
解释:指定运行nginx的worker子进程的属主和属组,其中属组可以不指定
示例:user nginx nginx;
-pid DIR
解释:指定运行nginx的master主进程的pid文件存放路径
示例:opt/nginx/logs/nginxpid
-worker_rlimit_nofile number
解释:指定worker子进程可以打开的最大文件句柄数
示例:worker_rlimit_nofile 20480;
-worker_rlimit_core size
解释:指定worker子进程异常终止后的core文件,用于记录分析问题, 注意nginx用户要对目录有写权限,不然无法记录。
示例:worker_rlimit_core 50M; working_directory /opt/nginx/tem;
-worker_processes number | auto
解释:指定nginx启动的worker子进程数量
示例:worker_processes 4; worker_process auto;
-worker_cpu_affinity cpumask1 cpumask2
解释:将每个worker子进程与我们的cpu物理核心绑定
示例:
worker_cpu_affinity 0001 0010 0100 1000; 4个物理核心,4个worker子进程
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 8物理核心,8
子进程
worker_cpu_affinity 01 10 01 10; 2物理核心,4子进程
备注:将每个worker子进程与特定的cpu物理核心绑定,优势在于:避免同一个worker子进程在不同的cpu核心上切换,导致缓存失效,降低性能;但是其并不能真正的避免进程切换
-worker_priority number
解释:指定worker子进程的nice值,以调整运行nginx的优先级,通常设定为负值,以优先调用nginx
示例:worker_priority -10;
备注:Linux默认进程的优先级是120,值越小越优先;nice设定范围为-20到+19
-work_shutdown_timeout time
解释:指定worker子进程优雅退出的超时时间
示例:worker_shutdown_timeout 5s;
备注:防止恶意请求,比如建立tcp连接后没有发请求或者没有回应,会在5s后关闭连接。避免占用系统资源。
-timer_resolution interval
解释:worker子进程内部使用的计时器精度,调用时间间隔越大,系统调用越少,有利于性能提升;反之,系统调用越多,性能下降
示例:worker_resolution 100ms;
-daemon on|off
解释:设定nginx的运行方式。默认为on,表示后台运行。off表示前台运行,会输出日志信息。前台用于调试,后台用于生产
-lock_file file
解释:负载均衡互斥锁文件存放路径
-use [ select | poll | kqueue | epoll | /dev/poll | eventpot ]
nginx使用何种事件驱动模型。默认配置无,建议不配置,让nginx自己选择。
-worker_connections number
worker子进程能够处理的最大并发连接数。默认1024,建议65535。Linux可以打开的最大文件句柄数是65535,设置65535可以保证即使只有一个子进程也可以充分利用系统资源。
-accept_mutex [ on | off ]
是否打开负载均衡互斥锁。默认关闭。当用户向nginx发起请求时,主进程会向所有子进程询问,空闲的子进程将处理进程。当互斥锁打开时,由互斥锁轮流分配任务给子进程,可以提高效率。
-accept_mutex_delay time
互斥锁延迟时间。在互斥锁打开时生效,当互斥锁分配某个请求给子进程时,如果子进程由于繁忙不能处理时,会在延迟时间结束后分配给下一个子进程。可以避免请求长时间等待。
-muti_accept [ on | off ]
默认关闭。nginx子进程在某一时刻只能同时处理一个请求。打开后可以在同一时刻处理多个请求。实际情况下对提升性能不是很明显。
-server_name name1 name2
匹配请求服务器的域名,比如: 段中,可以放的上下文环境是>
以上就是关于能不能通过 nginx 判断 url 参数,返回不同页面全部的内容,包括:能不能通过 nginx 判断 url 参数,返回不同页面、Web服务器根据url参数代理、nginx 路由配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)