当前位置: 首页 > news >正文

北京新浪网站制作公司网站排行

北京新浪网站制作公司,网站排行,北京网站建公司新闻,描述一下网站建设的基本流程一、常见的 Nginx 正则表达式 在 Nginx 配置中#xff0c;正则表达式用于匹配和重写 URL 请求。以下是一些常见的 Nginx 正则表达式示例#xff1a; 当涉及正则表达式时#xff0c;理解各个特殊字符的含义是非常重要的。以下是每个特殊字符的例子#xff1a; ^#xff1…一、常见的 Nginx 正则表达式 在 Nginx 配置中正则表达式用于匹配和重写 URL 请求。以下是一些常见的 Nginx 正则表达式示例 当涉及正则表达式时理解各个特殊字符的含义是非常重要的。以下是每个特殊字符的例子 ^匹配输入字符串的起始位置 示例^hello 匹配以 hello 开头的字符串示例^/(user|profile): 匹配以 /user 或 /profile 开头的 URI。 $匹配输入字符串的结束位置 示例world$ 匹配以 world 结尾的字符串 *匹配前面的字符零次或多次 示例colou*r 匹配 color 或 colour 匹配前面的字符一次或多次 示例gol 匹配 gol, gool, gooool, 等等 ?匹配前面的字符零次或一次 示例apple(s)? 匹配 apple 或 apples .匹配除 \n 之外的任何单个字符 示例b.t 匹配 bat, but, bt, 等等 \将后面接着的字符标记为一个特殊字符 示例\.jpg$: 匹配以 .jpg 结尾的 URI。示例\d 匹配一个或多个数字 {n}重复 n 次 示例a{3} 匹配 aaa {n,}重复 n 次或更多次 示例b{2,} 匹配 bb, bbb, bbbb, 等等 {n,m}重复 n 到 m 次 示例c{2,4} 匹配 cc, ccc, cccc []定义匹配的字符范围 示例[aeiou] 匹配任何一个元音字母示例[0-9] 匹配任何一个数字 [c]匹配单个字符 c 示例[abc] 匹配 a, b, 或 c [a-z]匹配 a-z 小写字母的任意一个 示例[a-z] 匹配任何一个小写字母 [a-zA-Z0-9]匹配所有大小写字母或数字 示例[a-zA-Z0-9] 匹配任何一个大小写字母或数字 ()表达式的开始和结束位置 示例(abc) 匹配 abc |或运算符 示例cat|dog 匹配 cat 或 dog 这些正则表达式可用于识别特定的 URL 模式并据此进行重定向或其他操作。 二、Nginx Location基本操作 2.1 Location 大致可以分为三类 在 Nginx 配置中location 主要分为三类精确匹配、前缀匹配和正则表达式匹配。 精确匹配指定完整的 URI 进行匹配。location / {...}前缀匹配指定 URI 的前缀进行匹配。location / {...}正则表达式匹配使用正则表达式进行匹配。正则匹配location ~ / {...} 示例 location /about {# 精确匹配 }location /blog/ {# 前缀匹配 }location ~* \.(gif|jpg|jpeg)$ {# 正则表达式匹配 } 这些不同的匹配规则使得我们能够根据不同的需求来灵活地配置服务器。 2.2 Location 常用的匹配规则 在 location 中有一些常用的匹配规则例如 : 精确匹配。也就是完全匹配^~: 前缀匹配如果匹配成功停止搜索其他 location。~ 和 ~*: 区分大小写和不区分大小写的正则表达式匹配。!~ 区分大小写的匹配取非。!~* 不区分大小写的匹配取非。 这些匹配规则决定了如何匹配 URI并且影响着 location 的优先级。 2.3 Location 优先级 在 Nginx 中location 的优先级遵循“先精确匹配再前缀匹配最后正则表达式匹配”的原则。这意味着精确匹配的 location 会优先匹配其次是前缀匹配最后是正则表达式匹配。 2.4 Location 示例说明 假设我们有以下几个 location 规则 location /about { # 精确匹配 }location /blog/ { # 前缀匹配 }location ~* \.(gif|jpg|jpeg)$ { # 正则表达式匹配 } 当请求 URI 为 /about 时将匹配第一个规则因为它是精确匹配。请求 URI 为 /blog/some-article 时将匹配第二个规则因为它是前缀匹配。而请求 URI 为 /image.jpg 时将匹配第三个规则因为它是正则表达式匹配。 location / {# 这里匹配根目录的请求不包括任何额外的路径# 为精确匹配 / 主机名后面不能带任何字符串比如访问 / 和 /data则 / 匹配/data 不匹配再比如 location /abc则只匹配/abc /abc/或 /abcd不匹配 }location /user/ {# 匹配以 /user/ 开头的所有请求比如 /user/profile、/user/settings 等# 匹配任何以 /user/ 开头的地址匹配符合以后还要继续往下搜索其它 location 只有其它 location后面的正则表达式没有匹配到时才会采用这一条 }location ~* \.(css|js)$ {# 匹配所有以 .css 或 .js 结尾的请求不区分大小写 }location ^~ /admin {# 匹配以 /admin 开头的请求并且停止匹配其它正则规则 }location ~ ^/article/(\d) {# 匹配类似 /article/123、/article/456 这样的数字结尾的请求 } 2.5 Location 匹配顺序 在 Nginx 中location 的匹配顺序非常重要。通常情况下应该按照从精确匹配到前缀匹配再到正则表达式匹配的顺序进行配置以确保匹配的准确性。 2.6  三个匹配规则定义 2.6.1 直接匹配网站根 第一个必选规则直接匹配网站根通过域名访问网站首页比较频繁使用这个会加速处理比如说官网可以是一个静态首页也可以直接转发给后端应用服务器 对于直接匹配网站根的需求可以使用如下配置 location / { # 处理根目录请求 root html;index index.html index.htm; } 2.6.2 处理静态文件请求 第二个必选规则是处理静态文件请求这是nginx作为http服务器的强项有两种配置模式目录匹配或后缀匹配,任选其一或搭配使用 静态文件通常位于特定的目录中可以使用前缀匹配来处理静态文件请求 目录匹配 location /static/ { # 处理静态文件请求 root /usr/share/nginx/html/;index index.html index.htm;try_files $uri $uri/ /dp/index.html systemUpdate; } 后缀匹配: location ~* \.(xlsx|jpg)$ { # 处理特定类型的请求 root /usr/share/nginx/html/file; } 2.6.3 通用规则 第三个规则就是通用规则比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器 非静态文件请求就默认是动态请求 location / {proxy_pass http://127.0.0.1:8080; } 通过以上配置示例我们可以更好地理解 Nginx 中 location 的匹配规则和优先级。 三、Nginx Rewrite基本操作 rewrite 功能是利用 Nginx 提供的全局变量或自定义变量结合正则表达式和标志位来实现 URL 的重写和重定向。它通常用于处理域名更换后的跳转、页面地址变更的重定向、网站防盗链等需求。 rewrite 指令可以放置在 server、location 和 if 块中它默认只对域名后面除了传递的参数之外的字符串进行匹配重写。比如对于 URL http://www.baidu.com/abc/bbs/index.php?a1b2rewrite 只会对 /abc/bbs/index.php 部分进行重写。 下面是 rewrite 的语法格式 rewrite regex replacement [flag]; 其中 regex 表示正则表达式匹配规则。replacement 表示重定向后的内容。flag 表示 rewrite 支持的标志位。 3.1 rewrite 跳转实现 使用 rewrite 可以对 URL 进行重定向或重写常用于实现网站 URL 的美化、重定向等功能。 Nginx 通过 ngx_http_rewrite_module 模块支持 URL 重写它也支持 if 条件判断但不支持 else。在进行跳转时从一个 location 跳转到另一个 location但最多只能执行 10 次跳转否则 Nginx 将返回 500 错误。使用 PCRE 语法规则进行匹配并通过重写模块的 set 指令创建新的变量并设置其值。 3.2 rewrite 执行顺序 rewrite 指令按照配置文件中的先后顺序执行匹配成功后会立即执行相应的重定向或重写操作。 执行 server 块内的 rewrite 指令。进行 location 匹配。在选定的 location 中执行 rewrite 指令。 3.3 flag 标记说明 last本条规则匹配完成后继续向下匹配新的 location URL 规则一般用于 server 和 if 块中。break本条规则匹配完成后立即终止不再匹配后续的任何规则一般用于 location 块中。redirect返回 302 临时重定向浏览器地址栏会显示跳转后的 URL 地址。permanent返回 301 永久重定向浏览器地址栏会显示跳转后的 URL 地址。 四、rewrite 和 location 区别 rewrite 和 location 在功能上有些相似都能实现跳转但主要区别在于 rewrite 用于在同一域名内更改获取资源的路径。location 用于对一类路径进行访问控制或反向代理也可以用proxy_pass将请求代理到其他机器。 五、Nginx Rewrite 示例 5.1 基于域名的跳转 现在公司旧域名www.tong.com有业务需求变更需要使用新域名www.ctt.com代替但是旧域名不能废除需要跳转到新域名上而且后面的参数保持不变。 vim /usr/local/nginx/conf/nginx.conf #编辑nginx配置文件 server {listen       80;server_name  www.tong.com;  #域名修改  charset utf-8;access_log  /var/log/nginx/access.log;  #日志修改location / {#添加域名重定向if ($host www.tong.com){       #$host为rewrite全局变量代表请求主机头字段或主机名 rewrite ^/(.*)$ http://www.ctt.com/$1 permanent;   #$1为正则匹配的内容即“域名/”之后的字符串}root   html;index  index.html index.htm;}} echo 192.168.80.20 www.tong.com www.ctt.com /etc/hosts    #修改本地host映射 #创建test/1.htmlcd /usr/local/nginx/htmlmkdir test #创建目录echo 测试web1 test/1.html systemctl restart nginx  #重启nginx服务 浏览器输入模拟访问 http://www.tong.com/test/1.html(虽然这个请求内容是不存在的) 会跳转到www.ctt.com/test/1.html查看元素可以看到返回301实现了永久重定向跳转而且域名后的参数也正常跳转。 5.2 基于客户端 IP 访问跳转 今天公司业务新版本上线要求所有 IP 访问任何内容都显示一个固定维护页面只有公司 IP 192.168.80.20访问正常。 vim /usr/local/nginx/conf/nginx.conf server {listen       80;server_name  www.tong.com;      #域名修改  charset utf-8;access_log  /var/log/nginx/access.log;      #日志修改#设置是否合法的IP标记set $rewrite true;                 #设置变量$rewrite变量值为boole值true#判断是否为合法IP#remode_addr表示客户端if ($remote_addr 192.168.80.20){  #当客户端IP为192.168.80.20时将变量值设为false不进行重写set $rewrite false;}#除了合法IP其它都是非法IP进行重写跳转维护页面if ($rewrite true){               #当变量值为true时进行重写rewrite (.) /web.html;         #将域名后边的路径重写成/web.html例如www.tong.com/web.html}location /web.html {root /var/www/html;              #网页返回/var/www/html/web.html的内容}location / {root   html;index  index.html index.htm;}} echo 页面维护中。。。 /var/www/html/web.html systemctl restart nginx 只有本机能跳转其他机子直接跳转到web界面 如果rewrite (.) /web.html; 改成rewrite (.) /web.html permanent; 的话如果是非 192.168.80.20 的主机访问会使浏览器修改请求访问的URL成 http://www.tong.com/web.html 再请求访问这样就会进入 一直在 rewrite 的死循环访问请求会一直被重写成 http://www.tong.com/web.html 再请求访问 5.3 基于旧域名跳转到新域名后面加目录 现在访问的是 http://www.tong.com/post/现在需要将这个域名下面的访问都跳转到http://www.ctt.com/tong/post/ vim /usr/local/nginx/conf/nginx.conf server {listen       80;server_name  www.tong.com;      #域名修改  charset utf-8;access_log  /var/log/nginx/access.log;#添加location /post {rewrite (.) http://www.ctt.com/tong$1 permanent;       #这里的$1为位置变量代表/post}location / {root   html;index  index.html index.htm;}} mkdir -p /usr/local/nginx/html/tong/postecho 测试web4 /usr/local/nginx/html/tong/post/1.htmlecho 192.168.80.20 tong.com /etc/hosts systemctl restart nginx 使用浏览器访问 http://tong.com/post/1.html 跳转到 http://www.ctt.com/tong/post/1.html 5.4 基于参数匹配的跳转 现在访问http://www.tong.com/100-(100|200)-100.html 跳转到http://www.tong.com页面。 vim /usr/local/nginx/conf/nginx.conf server {listen       80;server_name  www.tong.com;      #域名修改  charset utf-8;access_log  /var/log/nginx/access.log;if ($request_uri ~ ^/100-(100|200)-(\d).html$) {    #\d代表匹配数字代表匹配1个或多个rewrite (.) http://www.tong.com permanent;}location / {root   html;index  index.html index.htm;}} systemctl restart nginx $request_uri包含请求参数的原始URI不包含主机名如http://www.tong.com/cao/tong/index.html?a1b2 中的 /cao/tong/index.php?a1b2 $uri这个变量指当前的请求URI不包括任何参数如:/cao/tong/index.html $document_uri与$uri相同这个变量指当前的请求URI不包括任何传递参数如:/cao/tong/index.html 使用浏览器访问 http://www.tong.com/100-200-100.html 或 http://www.tong.com/100-100-100.html 跳转到http://www.tong.com页面。#100-200只能输入100或200 5.5 基于目录下所有 php 结尾的文件跳转 要求访问 http://www.ctt.com/upload/123.php 跳转到首页。 vim /usr/local/nginx/conf/nginx.conf server {listen       80;server_name  www.ctt.com;       #域名修改  charset utf-8;access_log  /var/log/nginx/access.log;location ~* /upload/.*\.php$ {rewrite (.) http://www.ctt.com permanent;}location / {root   html;index  index.html index.htm;}} systemctl restart nginx 浏览器访问 http://www.ctt.com/upload/123.php 跳转到http://www.ctt.com页面。   5.6 基于最普通一条 url 请求的跳转 要求访问一个具体的页面如 http://www.tong.com/cao/123.html 跳转到首页 vim /usr/local/nginx/conf/nginx.conf server {listen       80;server_name  www.tong.com;      #域名修改  charset utf-8;access_log  /var/log/nginx/www.tong.com-access.log;location ~* ^/cao/123.html {rewrite (.) http://www.tong.com permanent;}location / {root   html;index  index.html index.htm;}} systemctl restart nginx 六、总结 Location 指令 location 指令用于定义请求的匹配规则以及相应的处理方式。可以使用不同的匹配规则来满足不同的需求例如精确匹配、前缀匹配、正则表达式匹配等。location 块中可以包含多个其他指令如 proxy_pass、root 等用于指定请求匹配时的处理逻辑。 Rewrite 指令 rewrite 指令用于对请求的 URI 进行重写实现 URL 的重定向或改写。可以通过简单的重写规则或者正则表达式来实现灵活的 URL 重定向。使用 permanent 参数可以实现永久重定向而不使用参数则表示临时重定向。 常见应用场景 使用 location 指令可以根据请求的 URL 路径将请求分发到不同的处理逻辑例如静态文件的服务、反向代理等。通过 rewrite 指令可以实现 URL 的重写将请求重定向到指定的 URL 地址或者修改请求的 URI。 注意事项 在使用 rewrite 指令时需要小心处理避免出现重定向循环或者意外的重写结果。合理设计 location 匹配规则避免产生歧义或冲突保证请求能够按预期进行处理。 总的来说Nginx 中的 location 和 rewrite 指令为我们提供了强大的 URL 路由控制和重定向能力能够帮助我们更好地管理 Web 服务器的请求处理流程。合理地使用这两个指令可以提升网站性能、实现灵活的请求处理逻辑。
http://www.w-s-a.com/news/99078/

相关文章:

  • 《网页设计与网站建设》A卷答案广东新闻联播
  • 海南专业网站运营托管wordpress 去掉主题
  • 企业品牌网站制作甜品制作网站
  • 手机网站怎么制作影响力网站建设
  • 猪八戒网站做私活赚钱吗一尊网 又一个wordpress站点
  • 上海市做网站的公司滨州哪里做网站
  • 简单的网站建设步骤wordpress 贴吧主题
  • 金泉网做网站找谁表格做网站
  • 北京做兼职从哪个网站好江西省建设监督网站电子网
  • 什么网站做生鲜比较好安徽建设厅城乡官网
  • 域名购买网站有哪些问题上海装修网站建设
  • 找人做seo要给网站程序河北建设网网站
  • 哪家做网站性价比高wordpress最新文章链接插件
  • 维修网站怎么做移动互联网应用程序指的是什么
  • 张家界建设网站门户网站的建设原理
  • 企业通用网站模板湖南网站建设企业
  • 能看网站的视频app如何运行asp网站
  • 公司做网站还是做阿里好呢国外的旅游网站做的如何
  • 怎么做wep网站长沙seo排名公司
  • 海南网站网络推广做转运网站
  • 门户网站方案用户等待网站速度
  • 哈尔滨专业建网站方案深圳生活免费信息网
  • 检测网站是否被挂黑链wordpress 网址分享
  • 网站建设贵阳东莞网站建设策划
  • 网站5建设需要学什么桃城网站建设公司
  • 杭州外贸网站企业门户网站的安全性
  • 建设论坛网站需要做什么水果电商网站建设相关文献
  • 群晖 nas 做网站建设网站的报价
  • 白山做网站网站建设 app 优化
  • 畜牧业网站建设官方网站下载拼多多app