nginx域名隐性(地址栏域名不变)跳转

1、location + alias/root

  1. ......
  2. location /home {
  3. index index.html;
  4. alias /data/vue-music-class/tdist/;
  5. }
  6. ......

优点:能够实现域名地址不变,直接打开跳转的项目。
缺点:alias/root 只试用于本服务器上的项目。

注意:
一般nginx location proxy_pass转发大多针对于前端项目(nginx,apache等)转发后端项目(java,golang等),后端项目表现为IP:端口或者域名的形式,如下:

  1. ......
  2. location /parent-wechat {
  3. proxy_pass http://172.16.61.180:9525;
  4. }
  5. ......


这部分的跳转在浏览器中表现出来的URL也是不变的。

但是针对于前端项目之间的跳转,如果把proxy_pass后面的地址换成前端项目域名,那么在浏览器中的跳转,URL是改变的;
唯一的方式只有上面通过alias或者root的方式才能保持URL在浏览器地址栏中不变,打开的仍然是跳转后的网站内容。如果跳转过去的网站还有调用其他接口,那么还要做进一步的跳转或者会出现页面打开,但是加载不到图片的情况,所以转发过去的网址最好是静态页面。

nginx域名显式(地址栏域名改变)跳转

1、location + proxy_pass

对于大部分的前端匹配域名转发到后端的案例来说都使用这种proxy_pass跳转的方式来做。proxy_pass后面的跳转机器可以是一个域名,或者一个IP:端口,还可以是一个机器组的名称。

  1. ......
  2. upstream backend {
  3. server backend1.example.com weight=5;
  4. server backup1.example.com:8080 backup;
  5. }
  6. server {
  7. location / {
  8. proxy_pass http://backend;
  9. }
  10. }
  11. ......

具体匹配转发可参考:https://www.yuque.com/qinxi-cvygi/xalash/fdpx56

2、rewrite

  1. server {
  2. listen 80;
  3. server_name www.123.com m.123.com;
  4. ......
  5. rewrite ^(.*) https://www.123.com$1 permanent;
  6. }

可以单独使用在域名的HTTPS 的301永久跳转或者302临时跳转上;此时域名的URL在浏览器栏中也是不变的。

3、location + rewrite

  1. ......
  2. location /static/
  3. {
  4. rewrite ^ http://www.abc.com ;
  5. }
  6. ......

具体匹配转发可参考:https://www.yuque.com/qinxi-cvygi/xalash/fdpx56