服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - 关于nginx 反向代理 URL替换方案

关于nginx 反向代理 URL替换方案

2022-07-24 13:11皮卡车厘子 Nginx

这篇文章主要介绍了nginx 反向代理 URL替换方案,本文给大家代理两种方法一种是直接替换location匹配部分,第二种是使用nginx 的rewrite 模块,本文给大家介绍的非常详细,需要的朋友可以参考下

nginx 提供反向代理服务,日常开发过程中有时候我们需要使用nginx 作为代理服务根据url的不同去访问不同的服务器或者不同端口,如下提供两种方案。

1.直接替换location  匹配部分

1.proxy_pass的目标地址,默认不带/,表示只代理域名,url和参数部分不会变(把请求的path拼接到proxy_pass目标域名之后作为代理的URL)

2.如果在目标地址后增加/,则表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
        listen       80;
        server_name  localhost;
location /system {          
        proxy_pass        http://127.0.0.1:8080;
        proxy_redirect    off;
        proxy_set_header  Host  $host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;          
        }
# proxy_pass  以/结尾
location /system {          
        proxy_pass        http://127.0.0.1:8080/;
        proxy_redirect    off;
        proxy_set_header  Host  $host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;          
        }
        }

例如:http://192.168.25.132/system/sysMenu/tree

如上两个匹配成功后,实际代理的目标url分别是

http://127.0.0.1:8080/system/sysMenu/tree (把/system/sysMenu/tree拼接到proxy_pass 地址的127.0.0.1:8080之后)

http://127.0.0.1:8080/sysMenu/tree (把/system/sysMenu/tree去掉匹配到的location /system拼接到proxy_pass 地址的127.0.0.1:8080之后)

2.使用nginx 的rewrite 模块 

rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。

?
1
2
3
4
5
6
7
8
9
10
11
12
  rewrite    <regex>    <replacement>    [flag];
 
    关键字      正则        替代内容          flag标记
    关键字:其中关键字error_log不能改变
    正则:perl兼容正则表达式语句进行规则匹配
    替代内容:将正则匹配的内容替换成replacement
    flag标记:rewrite支持的flag标记
flag标记说明:
last  #本条规则匹配完成后,继续向下匹配新的location URI规则
break  #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

把到本服务的所有请求转发到www.summer.com

rewrite ^/(.*) http://www.summer.com/$1 break;

把到本服务器的所有请求路径中以/system开头的请求 替换成不带system的,例如http://192.168.25.132/system/sysMenu/tree ,匹配后地址变成 http://127.0.0.1:8080/sysMenu/tree

rewrite ^/system/(.*) /$1 break;        

说明:                                        

rewrite为固定关键字,表示开始进行rewrite匹配规则

regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址

replacement部分是http://www.summer.com/$1   $1是取自regex部分()里的内容。匹配成功后跳转到的URL。

flag部分 break表示停止匹配,然后跳转到新的 http://www.summer.com/$1 地址上。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            #/data/manager可以存放静态页面
            root   /data/manager;
            index  index.html index.htm;
        }
        location /system {          
        proxy_pass        http://127.0.0.1:8080;
        proxy_redirect    off;
        proxy_set_header  Host  $host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        rewrite ^/system/(.*) /$1 break;       
        }
    }

regex 常用正则表达式说明

关于nginx 反向代理 URL替换方案

rewrite 企业应用场景

Nginx的rewrite功能在企业里应用非常广泛:

u 可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。

u 为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。

u 网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com

u 根据特殊变量、目录、客户端的信息进行URL调整等

到此这篇关于nginx 反向代理 URL替换方案的文章就介绍到这了,更多相关nginx 反向代理替换URL内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/yk614294861/article/details/102688926

延伸 · 阅读

精彩推荐
  • NginxUbuntu使用nginx搭建webdav文件服务器的详细过程

    Ubuntu使用nginx搭建webdav文件服务器的详细过程

    今天通过本文给大家分享Ubuntu使用nginx搭建webdav文件服务器的详细过程,在这小编提示大家在安装nginx时需要先安装nginx-full,具体安装方法跟随小编一起通...

    DexterLien7422021-07-21
  • Nginx详细nginx多域名配置的方法

    详细nginx多域名配置的方法

    Nginx绑定多个域名,可通过把多个域名规则写一个配置文件里实现,也可通过分别建立多个域名配置文件实现,为了管理方便,建议每个域名建一个文件,...

    AndyIdea5542019-11-18
  • NginxCentOS 6.7下nginx SSL证书部署的方法

    CentOS 6.7下nginx SSL证书部署的方法

    这篇文章主要介绍了在CentOS 6.7下nginx SSL证书部署的方法,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。 ...

    LoyaChen5362019-11-24
  • Nginxnginx proxy_cache批量清除缓存的脚本介绍

    nginx proxy_cache批量清除缓存的脚本介绍

    今天小编就为大家分享一篇关于nginx proxy_cache批量清除缓存的脚本介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    Sun-shell5132020-01-04
  • NginxNode.js站点使用Nginx作反向代理时配置GZip压缩的教程

    Node.js站点使用Nginx作反向代理时配置GZip压缩的教程

    这篇文章主要介绍了Node.js站点使用Nginx作反向代理时配置GZip压缩的教程,文中演示了Node使用Express框架时的HTTP传输压缩配置,需要的朋友可以参考下 ...

    smallfish4862019-11-12
  • NginxNginx限制搜索引擎爬虫频率、禁止屏蔽网络爬虫配置示例

    Nginx限制搜索引擎爬虫频率、禁止屏蔽网络爬虫配置示例

    这篇文章主要介绍了Nginx限制搜索引擎爬虫频率、禁止屏蔽网络爬虫配置示例,限制爬虫频率用于一些无良爬虫,禁止爬虫用于一些不需要收录的网站,需要的...

    Nginx教程网4522019-10-22
  • Nginx使用goaccess分析nginx日志的详细方法

    使用goaccess分析nginx日志的详细方法

    goaccess 工具提供快速、多样的HTTP状态统计,可以令管理员不再纠结于统计各类数据,和繁杂的指令以及一大堆管道/正则表达式说再见,今天通过本文给大...

    -梦里不知身是客7942021-08-17
  • Nginx让我一起浅析Nginx 架构

    让我一起浅析Nginx 架构

    nginx 是由一个 master 管理进程,多个 worker 进程处理工作的多进程模型。基础架构设计,如下图所示...

    腾讯技术工程11422021-04-13