nginx域名隐性(地址栏域名不变)跳转
1、location + alias/root
......location /home {index index.html;alias /data/vue-music-class/tdist/;}......
优点:能够实现域名地址不变,直接打开跳转的项目。
缺点:alias/root 只试用于本服务器上的项目。
注意:
一般nginx location proxy_pass转发大多针对于前端项目(nginx,apache等)转发后端项目(java,golang等),后端项目表现为IP:端口或者域名的形式,如下:
......location /parent-wechat {proxy_pass http://172.16.61.180:9525;}......
这部分的跳转在浏览器中表现出来的URL也是不变的。
但是针对于前端项目之间的跳转,如果把proxy_pass后面的地址换成前端项目域名,那么在浏览器中的跳转,URL是改变的;
唯一的方式只有上面通过alias或者root的方式才能保持URL在浏览器地址栏中不变,打开的仍然是跳转后的网站内容。如果跳转过去的网站还有调用其他接口,那么还要做进一步的跳转或者会出现页面打开,但是加载不到图片的情况,所以转发过去的网址最好是静态页面。
nginx域名显式(地址栏域名改变)跳转
1、location + proxy_pass
对于大部分的前端匹配域名转发到后端的案例来说都使用这种proxy_pass跳转的方式来做。proxy_pass后面的跳转机器可以是一个域名,或者一个IP:端口,还可以是一个机器组的名称。
......upstream backend {server backend1.example.com weight=5;server backup1.example.com:8080 backup;}server {location / {proxy_pass http://backend;}}......
具体匹配转发可参考:https://www.yuque.com/qinxi-cvygi/xalash/fdpx56
2、rewrite
server {listen 80;server_name www.123.com m.123.com;......rewrite ^(.*) https://www.123.com$1 permanent;}
可以单独使用在域名的HTTPS 的301永久跳转或者302临时跳转上;此时域名的URL在浏览器栏中也是不变的。
3、location + rewrite
......location /static/{rewrite ^ http://www.abc.com ;}......
