[转帖]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(四)负载均衡

一 nginx目录的说明 1 nginx/ 3 |-- client_body_temp 4 |-- conf #这是Nginx所有配置文件的目录,极其重要 5 | |-- fastcgi.conf 'fastcgi相关参数的配置文件' 6 | |-- fastcgi.conf.default #f

[转帖]nginx限速

https://www.cnblogs.com/fengzi7314/p/16541440.html 第一步,先创建限制的规则,我这里直接在nginx默认的配置文件目录下配置,如果想自定义,需要在主配置文件添加include xx/xxx/xxx/*.conf配置 [root@node5 nginx

[转帖]Nginx支持WebSocket反向代理

https://www.cnblogs.com/zhengchunyuan/p/12923692.html WebSocket是目前比较成熟的技术了,WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类

[转帖]Nginx内置变量以及日志格式变量参数详解

补充 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为空字符串 $uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$reques