原文网址:Nginx系列--转发申请的办法_IT利刃出鞘的博客-CSDN博客

简介

阐明

本文介绍Nginx转发申请的办法。

分享Java技术星球(自学精灵):https://learn.skyofit.com/

需要

用户拜访aaa.com/bbb时,理论拜访的是bbb123.com。

计划1:return

办法

server {    listen       8080;    server_name  aaa.com;    location /bbb {        return 302 https://bbb123.com$request_uri;    } }

![]()

阐明

浏览器会间接跳转到https://bbb123.com,相当于间接location.href = ‘https://bbb123.com’ 。

计划2:rewrite

办法

法1:正则匹配所有的URI再去掉结尾第一个/(反斜线)。

server {    listen       80;    server_name  aaa.com;    rewrite ^/(.*)$ https://bbb123.com/$1 permanent;}

法2: $request_uri变量匹配所有的URI。

server {    listen       80;    server_name  aaa.com;    rewrite ^ https://bbb123.com$request_uri? permanent;}

法3:与if联合

server {    listen       80;    server_name  aaa.com abc.com;    if ($host = 'aaa.com' ) {        rewrite ^/(.*)$ https://bbb123.com/$1 permanent;    }}

阐明

浏览器会间接跳转到https://bbb123.com,相当于间接location.href = ‘https://bbb123.com’ 。

计划3:proxy_pass

办法

server {    listen       80;    server_name  aaa.com;      location /aaa/ {        proxy_pass https://bbb123.com;    }}

阐明

浏览器显示的依然是aaa.com/aaa,用户是不晓得https://bbb123.com的存在的。

联结应用

上边三者是能够联结应用的,例如:

例1:rewrite带break

server {    listen       80;    server_name  localhost;        location /abc {        # 只保留/abc/前面的门路        rewrite ^/abc/(.*)$ /proxy/$1 break;        # 改写完之后, 再进行代理; 最终后果: http://www.proxy_pass.com/proxy/$1         proxy_pass http://www.proxy_pass.com;    }     location / {        root   /usr/share/nginx/html;        index  index.html index.htm index.php;    }}

拜访:localhost/abc/aaa

理论拜访:http://www.proxy_pass.com/abc/aaa(用户无感知)

例2:rewrite不带break

server {    listen       80;    server_name  localhost;        location /abc {        # 只保留/abc/前面的门路        rewrite ^/abc/(.*)$ /proxy/$1;        # 改写完之后, 再进行代理; 最终后果: http://www.proxy_pass.com/proxy/$1         proxy_pass http://www.proxy_pass.com;    }     location / {        root   /usr/share/nginx/html;        index  index.html index.htm index.php;    }}

拜访:localhost/abc/aaa

理论拜访:/usr/share/nginx/html/index.html(用户无感知)