`
gelongmei
  • 浏览: 211490 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Nginx的proxy_redirect作用

 
阅读更多
Nginx的代理功能太完善了,我们看看proxy_redirect参数的作用。
http://www.aslibra.com/blog/post/nginx_proxy_redirect.php

案例说明:
要做一个html.aslibra.com的域名处理很多网站的html内容,当然是后端的服务器了,目录分析
html.zcom.com/img.aslibra.com/
html.zcom.com/css.aslibra.com/
访问的域名是该目录下的域名,那前端nginx的配置应该类似这样:

server {
  server_name img.aslibra.com;
  location / {
    rewrite ^(.*) /$http_host$1 break;
    proxy_set_header Host html.aslibra.com;
    proxy_pass http://cache-89;
  }
}


但这样访问目录时如果没有以“/”结尾,则服务器会返回301redirect:

[root@aslibra ~]# curl -I http://img.aslibra.com/www
HTTP/1.1 301 Moved Permanently
Server: nginx/0.7.59
Date: Tue, 21 Jul 2009 15:28:58 GMT
Connection: keep-alive
Location: http://html.aslibra.com/img.aslibra.com/www/


html.aslibra.com这个域名并非公布的域名,返回给客户端是会自然产生错误的
Nginx可以很好的处理这个问题:

server {
  server_name img.aslibra.com;
  location / {
    rewrite ^(.*) /$http_host$1 break;
    proxy_set_header Host html.aslibra.com;
    proxy_pass http://cache-89;
    proxy_redirect   http://html.aslibra.com/img.aslibra.com/    /;
  }
}


加一行proxy_redirect后,正常了:

[root@aslibra ~]# curl -I http://img.aslibra.com/www
HTTP/1.1 301 Moved Permanently
Server: nginx/0.7.59
Date: Tue, 21 Jul 2009 15:23:49 GMT
Content-Type: text/html
Location: http://img.aslibra.com/www/
Connection: keep-alive
Content-Length: 185
Expires: Tue, 21 Jul 2009 16:23:49 GMT
Cache-Control: max-age=3600


就这么样就ok啦~
不过貌似不支持变量出现在地址里,这个就郁闷了,必须指定相应域名。
对于多个域名匹配的server,redirect设置不能写作'/'了,否则会用第一个域名作为redirect域名
可以写几个匹配规则:

proxy_redirect   http://html.aslibra.com/img.aslibra.com/    http://img.aslibra.com/;
proxy_redirect   http://html.aslibra.com/css.aslibra.com/    http://css.aslibra.com/;
分享到:
评论

相关推荐

    Nginx之proxy_redirect使用详解

    在讨论Nginx的proxy_redirect指令时,我们首先要明确其在Nginx配置中的作用和重要性。proxy_redirect指令主要用于在反向代理过程中修改响应头中的Location和Refresh字段值。在Web服务器配置中,特别是在使用Nginx...

    nginx静态文件缓存的解决方案1

    proxy_redirect off; proxy_cache cache_one; proxy_cache_valid 200 304 12h; proxy_cache_valid 301 302 1d; proxy_cache_valid any 1m; proxy_cache_key $uri$is_args$args; expires 30d; proxy_set_...

    nginx location中多个if里面proxy_pass的方法

    proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_...

    nginx中location中关于proxy_pass和rewrite的应用.rar

    `proxy_pass`是Nginx的一个关键指令,它用于将客户端的请求转发到上游服务器,通常用于反向代理。例如,当Nginx接收到一个特定的URL请求时,它可以将这个请求传递给内部的Web服务器(如Apache、Tomcat或Node.js服务...

    nginx-auth:一个简单的身份验证应用程序,供nginx auth_request机制使用

    # redirect 401 and 403 to login form error_page 401 403 =200 /nginx-auth/;}location /nginx-auth/ { proxy_pass http://localhost:3000/; proxy_redirect http://localhost:3000/ /; # Login service returns ...

    Windows_Nginx_Tomcat_负载均衡服务器

    proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_...

    Nginx 性能优化实践1

    Nginx还提供了多种参数来优化代理行为,如proxy_redirect、proxy_set_header等,用于控制重定向、传递请求头信息以及设置超时时间。 接下来,我们讨论负载均衡。通过Nginx的upstream模块,我们可以将请求分发到多个...

    nginx windows环境配置

    `proxy_pass`指令用于配置Nginx作为反向代理时,将请求转发到的后端服务器地址。例如: ```nginx proxy_pass http://localhost:8080; ``` 这行配置告诉Nginx将请求转发到运行在本地机器8080端口上的服务。 ##### ...

    Nginx文件上传模块配置

    proxy_hide_header X-Accel-Redirect; proxy_hide_header Content-Length; proxy_intercept_errors off; } ``` `upload_progress`指令会使用$request_id变量(即X-Progress-ID)来跟踪上传进度,并将其传递给...

    nginx配置文件祥解

    - `proxy_redirect off;`:关闭自动重定向,避免循环重定向问题。 - `proxy_set_header`:设置传递给后端服务器的请求头,如Host、X-Real-IP等。 - `client_max_body_size`:限制上传文件的最大大小。 - `proxy_...

    Windows下Nginx的安装与配置

    proxy_store用于设置代理存储,proxy_temp_path用于设置代理临时文件路径,proxy_redirect用于设置代理重定向,proxy_set_header用于设置代理头信息。 nginx的安装与配置是非常重要的,需要根据实际情况进行配置,...

    Nginx 性能优化实践 (1)1

    * proxy_redirect:是否允许重定向 * proxy_set_header:传 header 参数至后端服务 * proxy_connect_timeout:连接代理服务超时时间 * proxy_send_timeout:请求发送最大时间 * proxy_read_timeout:读取最大时间 * ...

    一分钟搞定 Nginx反向代理 nginx域名代理

    proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } (完整拷贝上面的内容server_name www.**...

    nginx config reverse proxy for windows.pdf

    proxy_redirect off; proxy_set_header Host mnif.cn:8083; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } ``` 上述配置将客户端的请求转发到 ...

    使用Nginx_Supervisor_tornado搭建web服务.pdf

    redirect_stderr=true stdout_logfile=/var/log/your_app.log ``` 别忘了更新Supervisor配置并启动应用。 **3.3. Nginx配置** Nginx的配置需要将请求反向代理到Tornado应用,确保`proxy_pass`指向的是Supervisor...

    nginx配置负载均衡和反向代理示例.txt

    - `proxy_redirect off` 关闭了自动重定向。 - 多个`proxy_set_header` 用于设置转发时的HTTP头信息,确保客户端的真实信息能够被后端服务器获取。 - `client_max_body_size 10m` 和 `client_body_buffer_size ...

    windows下配置nginx反向代理tomcat

    proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; ...

    详解NGINX访问https跳转到http的解决方法

    **方法2**:利用NGINX的`proxy_redirect`指令进行自动修正。`proxy_redirect`允许我们修改或替换后端响应中的Location头。在NGINX配置中添加以下指令: ```nginx proxy_redirect http:// $scheme://; ``` 这行代码的...

    linux下Nginx+tomcat整合的安装与配置

    proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 获取真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理者的真实IP client_max...

Global site tag (gtag.js) - Google Analytics