2020年8月9日 星期日

nginx 使用 rewrite return的差異

最近要將官網搬到另外一台主機上

但有些服務還是要回到原機器上

透過nginx的設定來達成預期目標

如果是method get 可以透過rewrite完成

ex:

server {
  server_name web.ozzysun.com
  location / {
      rewrite /api/send_get http://oldweb.ozzysun.com/api/send_get;
      rewrite /api/send_get2 http://oldweb.ozzysun.com/api/send_get2;
  }
}
如果要轉的url都是method:get 就可以在一個location內把要轉的都一起設定完
注意 只能對應get
如果是post的轉址 可以透過return去做
ex:
server {
  server_name web.ozzysun.com
  location /api/send_post {
      return 307 http://oldweb.ozzysun.com/api/send_post;
  }
}
但get可以透過return去轉嗎?
可以 但要把參數用$args帶過去
ex:

server {
  server_name web.ozzysun.com
  location /api/send_get {
      return 307 http://oldweb.ozzysun.com/api/send_get?$args;
  }
}
要注意的是rewrite真正的意義是
重整你的url 再交給下一個處理
當然 如果rewrite 有帶到http作用就跟return很像了

沒有留言: