详解常用的nginx rewrite重写规则

我来为您详细讲解“详解常用的nginx rewrite重写规则”的完整攻略,包含两条示例说明。

什么是nginx rewrite重写规则?

Nginx中,rewrite重写规则是一种非常强大的功能。它可以让站点管理员通过重写URL路径,实现URL的伪静态、反向代理等功能。

rewrite语法

Nginx的rewrite语法是这样的:

rewrite regex replacement [flag];

其中,

  • regex表示一个正则表达式
  • replacement表示URL的替换字符串
  • flag表示可选的重写标记,包括break、last和redirect等

常用的rewrite规则

1. 实现URL伪静态

使用rewrite规则可以实现URL的伪静态,即把原来的动态URL转换成更美观的静态URL。比如,要把 http://example.com/index.php?id=123 转换成 http://example.com/article-123.html,可以使用下面的rewrite规则:

location / {
  if (!-e $request_filename){
    rewrite ^/article-(\d+)\.html$ /index.php?id=$1 break;
  }
}

在这个rewrite规则中,正则表达式 ^/article-(\d+)\.html$ 匹配所有以 /article- 开头、以 .html 结尾的URL地址,其中,(\d+) 表示一个或多个数字,用于匹配文章ID号。然后,通过替换字符串 /index.php?id=$1 把原来的URL重写为了动态URL。

2. 实现反向代理

使用rewrite规则可以实现反向代理,即把外部访问的URL地址重写为内部服务器的真实地址。比如,要把 http://example.com/webapp 转换成 http://127.0.0.1:8080/webapp,可以使用下面的rewrite规则:

location /webapp {
  rewrite ^/webapp(.*) /$1 break;
  proxy_pass http://127.0.0.1:8080;
}

在这个rewrite规则中,正则表达式 ^/webapp(.*)$ 匹配所有以 /webapp 开头的URL地址,其中,(.*) 表示零个或多个任意字符,用于匹配后面的路径及参数部分。然后,通过替换字符串 /$1 把URL重写为内部服务器的真实地址。最后,使用proxy_pass指令实现反向代理。

以上是两条常用的rewrite规则示例,希望可以对您的工作有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解常用的nginx rewrite重写规则 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • nginx 配置laravel框架域名配置

    server { listen 80; server_name admin.meiquick.local.com; #charset koi8-r; # access_log /var/log/nginx/admin.meiquick.local.access.log main; # error_log /var/log/ngix/admin.meiquic…

    Nginx 2023年4月16日
    00
  • lnmp nginx增加对thinkphp5的支持

    lnmp vhost add 添加完后,修改域名配置文件 root /home/wwwroot/域名目录/public; //工作目录配置到public 修改fastcgi.conf #fastcgi_param PHP_ADMIN_VALUE “open_basedir=$document_root/:/tmp/:/proc/”; fastcgi_para…

    Nginx 2023年4月16日
    00
  • nginx 网络层的优化

    TCP三次握手四次挥手   系统层的优化,主动建立连接时的重试次数 net.ipv4.tcp_syn_retries = 6   建立连接时本地端口可用范围;手动可以tiaoz net.ipv4.ip_local_port_range = 32768 60999   应用层建立连接超时时间 Syntax: proxy_connect_timeout time…

    Nginx 2023年4月13日
    00
  • nginx: [emerg] BIO_new_file(“/etc/nginx/ssl_key/server.crt”) failed (SSL: error:02001002:syste

    Centos 7.5  nginx+web集群配置https报错 报错信息: [root@lb01 conf.d]# nginx -tnginx: [emerg] BIO_new_file(“/etc/nginx/ssl_key/server.crt”) failed (SSL: error:02001002:system library:fopen:No …

    Nginx 2023年4月10日
    00
  • Nginx配置2-http块配置

    http配置块 http配置块包括http-全局块、http-server块、upstream 块儿。可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。 http-全局块 mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等 http { #设定mime类型,类型由mime.ty…

    Nginx 2023年4月16日
    00
  • thinkcmf3 和thinkcmf5 在 Nginx 配置的区别

    配置教程:https://www.thinkcmf.com/topic/351.html Thinkcmf3: server {         listen       80;         server_name  lh.scapp.nd.com lh.scapp.nd.com;         root   “D:/phpStudy/WWW/sc_a…

    Nginx 2023年4月13日
    00
  • 轻松搞定VIM高亮NGINX配置文件的方法

    下面是“轻松搞定VIM高亮NGINX配置文件的方法”的完整攻略: 1. 安装VIM插件管理器 首先,需要安装VIM的插件管理器,常用的有Vundle、Pathogen和Vim-plug等,本文以Vim-plug插件管理器为例: 在终端中输入命令: $ curl -fLo ~/.vim/autoload/plug.vim –create-dirs \ htt…

    Nginx 2023年5月16日
    00
  • 使用Ingress-Nginx来暴露ArgoCD Web-UI

    未安装ArgoCD参考GitOps实践之kubernetes部署Argocd 1. 查看Argocd Service 可以看到是ClusterIP,因此不能从外部直接访问Argocd的WEB-UI # kubectl get svc -n argocd NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE argocd-a…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部