See You Again

nginx重定向配置

最近测试服务器迁移,以前用的域名希望能够无缝的切换到新的地址,最简单的方案肯定是直接改 DNS 地址了,不过如果你没有这个权限或者希望循序渐进的迁移服务,那么就可以利用 nginx 来实现了。

重定向方案

例如之前监听的是本机的 8001 端口,现在可以直接进行重定向:

  1. server {
  2. listen 8001;
  3. return 301 http://10.20.xx.xxx:8001;
  4. }

这种简单粗暴,直接301跳转,比较适合入口类的页面应用。

rewrite方案

跟上面的方案差不多,不过上面是写死了一个静态地址,如果希望根据请求参数进行动态跳转,就要用这种了(可以根据正则匹配):

  1. server {
  2. listen 8001;
  3. rewrite ^/(.*) http://10.20.xx.xxx:8001/$1 permanent;
  4. }

或者这种,使用 nginx 的全局变量uri

  1. server {
  2. listen 8001;
  3. rewrite ^/ http://10.20.xx.xxx:8001$uri permanent;
  4. }

proxy_pass方案

前面两种都是重定向,如果是http接口的调用就很不友好了,你直接301可能对方都没有处理跳转的情况。

  1. location / {
  2. proxy_pass http://10.20.xx.xxx:8001;
  3. proxy_set_header Host $host;
  4. proxy_set_header X-Real-IP $remote_addr;
  5. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  6. }

在nginx这里进行转发,让新机器提供服务。这个用法就是所谓的反向代理,即外面的世界通过这一层代理访问里面的世界。正向代理则刚好相反,可以想想通常的翻墙,里面的世界通过一层代理访问外面的世界,正向和反向是要有一个参照对象的,有方向性的。参考这个漫画,有点意思
反向代理

2016-12-04 喜欢

Copyright © 2015-2018 转载请注明出处

回到顶部 ↑