[转帖]nginx重定向(Redirect)- rewrite

nginx,重定向,redirect,rewrite · 浏览次数 : 0

小编点评

```nginx server { listen 80; # 允许所有请求 access_log off; error_log off; # 设置重定向参数 rewrite ^/(.*) $1 permanent; # 对 /last.html 进行内容重写 location /last.html { root /usr/share/nginx/last; rewrite /last.html /index.html last; } # 将所有请求转发到 8084 端口 location /rewrite.html { proxy_pass http://localhost:8084/; } # 将所有请求转发到 8084 端口 location /permanent.html { proxy_pass http://localhost:8084/; } } ```

正文

语法:rewrite regex replacement [flag];;
默认值:——
可配置段:server, location
作用:通过正则表达式的使用来改变URI。可以同时存在一个或多个指令。需要按照顺序依次对URL进行匹配和处理。
示例:
 rewrite ^/(.*) http://www.baidu.com/$1 permanent;
解释:
rewrite:固定关键字,表示开始进行rewrite匹配规则。
正则表达式^/(.*):正则表达式,匹配完整的域名和后面的路径地址。
replacement为http://www.baidu.com/$1:其中$1是取regex部分()里面的内容。如果匹配成功后跳转到的URL。
flag为permanent:代表永久重定向,即跳转到 http://www.baidu.com/$1 地址上
  1. 3 redirect #返回302临时重定向,浏览器地址会显示跳转新的URL地址。
  2. 4 permanent #返回301永久重定向,浏览器地址会显示跳转新的URL地址。

示例1 :请求转发不要斜杠处理 ---break
  1. 请求: https://ip/abc/cc/xx
  2. location /abc/ {
  3. proxy_pass http://localhost:8084/;
  4. }
  5. 实际请求的 http://localhost:8084/cc/xx
  6. 如何让配置proxy_pass http://localhost:8084/; 改为 proxy_pass http://localhost:8084 ;
  7. location /abc/ {
  8. rewrite ^/abc/(.*)$ /$1 break;
  9. proxy_pass http://localhost:8084;
  10. }
  11. 效果也是: http://localhost:8084/cc/xx

示例2: 请求重定向到新地址 ---redirect

  1. [root@nginx01 ~]# vi /etc/nginx/conf.d/rewrite02.conf
  2. server {
  3. listen 80;
  4. server_name file.linuxds.com;
  5. access_log /var/log/nginx/file.access.log main;
  6. error_log /var/log/nginx/file.error.log warn;
  7. location ~ .* {
  8. root /usr/share/nginx/file;
  9. if ( !-e $request_filename ) {
  10. rewrite ^ http://www.cnblogs.com redirect;
  11. }
  12. }
  13. }
  14. 配置解释:
  15. 结合if指令来对nginx请求进行判断,若访问http://file.linuxds.com的资源存在root目录,则返回,若当前请求的资源文件不存在,则进行重定向跳转,重定向至 http://www.cnblogs.com。
  16. 页面直接302定向到 http://www.cnblogs.com 中
  1. [root@nginx01 ~]# vi /etc/nginx/conf.d/rewrite06.conf
  2. server {
  3. listen 80;
  4. server_name rewrite.linuxds.com;
  5. access_log /var/log/nginx/rewrite.access.log main;
  6. error_log /var/log/nginx/rewrite.error.log warn;
  7. location ~ .* {
  8. root /usr/share/nginx/rewrite;
  9. rewrite /rewrite.html /index.html redirect;
  10. }
  11. }
  12. 配置解释:访问 /redirect.html 的时候,页面直接302定向到 /index.html中。

示例3: 配置解释:访问 /last.html 的时候,页面内容重写到 /index.html 中  ---last

   

  1. [root@nginx01 ~]# vi /etc/nginx/conf.d/rewrite04.conf
  2. server {
  3. listen 80;
  4. server_name last.linuxds.com;
  5. access_log /var/log/nginx/last.access.log main;
  6. error_log /var/log/nginx/last.error.log warn;
  7. location ~ .* {
  8. root /usr/share/nginx/last;
  9. rewrite /last.html /index.html last;
  10. }
  11. }

示例4 重定向  301  permanent

  1. [root@nginx01 ~]# vi /etc/nginx/conf.d/rewrite07.conf
  2. server {
  3. listen 80;
  4. server_name permanent.linuxds.com;
  5. access_log /var/log/nginx/permanent.access.log main;
  6. error_log /var/log/nginx/permanent.error.log warn;
  7. location ~ .* {
  8. root /usr/share/nginx/permanent;
  9. rewrite /permanent.html /index.html permanent;
  10. }
  11. }
  12. 配置解释:访问 /permanent.html 的时候,页面直接301定向到 /index.html中。

 

与[转帖]nginx重定向(Redirect)- rewrite相似的内容:

[转帖]nginx重定向(Redirect)- rewrite

语法:rewrite regex replacement [flag];; 默认值:—— 可配置段:server, location 作用:通过正则表达式的使用来改变URI。可以同时存在一个或多个指令。需要按照顺序依次对URL进行匹配和处理。 示例: rewrite ^/(.*) http://ww

[转帖]Nginx反向代理中使用proxy_redirect重定向url

https://www.cnblogs.com/kevingrace/p/8073646.html 在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用proxy_redirect进行url重定向设置了。proxy_redirect功能比较强大,其作用是对

[转帖]Nginx中的Rewrite的重定向配置与实践

https://www.cnblogs.com/tugenhua0707/p/10798762.html 阅读目录 一:理解地址重写 与 地址转发的含义。 二:理解 Rewrite指令 使用 三:理解if指令 四:理解防盗链及nginx配置 简介:Rewrite是Nginx服务器提供的一个重要的功能

[转帖]nginx实现内容重定向的两种方式:rewrite和反向代理

第一种:rewrite 更多参考另一个blog 按照常规理解,实现重定向就是要用rewrite来实现,例如demo: [root@nginx01 ~]# vi /etc/nginx/conf.d/rewrite01.confserver { listen 80; server_name cnblog

[转帖]nginx实现内容重定向的两种方式:rewrite和反向代理

第一种:rewrite 更多参考另一个blog 按照常规理解,实现重定向就是要用rewrite来实现,例如demo: [root@nginx01 ~]# vi /etc/nginx/conf.d/rewrite01.confserver { listen 80; server_name cnblog

[转帖]日更第7日: (翻)nginx调优之使用return代替rewrite做重定向

https://www.jianshu.com/p/26dc6c2b5f43 解释说明 NGINX中重写url的能力是一个非常强大和重要的特性,从技术角度讲return与rewrite均能实现。但使用return相对rewrite更简单和更快,因为计算RegEx会产生额外的系统开销。 Return指

[转帖]nginx的重试机制 proxy_next_upstream

https://blog.csdn.net/xiao__gui/article/details/89441162 https://zhuanlan.zhihu.com/p/35803906 https://www.cnblogs.com/powerwu/articles/9791295.html h

[转帖]nginx的重试机制 proxy_next_upstream

https://blog.csdn.net/xiao__gui/article/details/89441162 https://zhuanlan.zhihu.com/p/35803906 https://www.cnblogs.com/powerwu/articles/9791295.html h

[转帖]Nginx:地址重写(return和rewrite)

https://www.cnblogs.com/testopsfeng/p/15294660.html Nginx的重写指令用于改变客户端的URL请求。主要有return和rewrite。两个指令都有重写URL的能力,但rewrite支持更复杂的功能。 Return指令 在server中返回 301

[转帖]nginx 启动、重启、关闭命令详解

https://www.jianshu.com/p/d70006f18a6d 作者:Gakki nginx 命令详解 输入命令:nginx -h nginx -h -?,-h:查看帮助 -v:显示版本信息并退出 -V:显示版本和配置选项信息,然后退出 -t:检测配置文件是否有语法错误,然后退出 -T