前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >产线nginx路径跳转问题

产线nginx路径跳转问题

作者头像
编程随笔
发布于 2019-09-11 08:07:12
发布于 2019-09-11 08:07:12
1.2K00
代码可运行
举报
文章被收录于专栏:后端开发随笔后端开发随笔
运行总次数:0
代码可运行

问题描述

应用在客户产线环境部署时,要求只需要输入域名就可以直接访问到应用,而不用输入完整的应用访问路径。

项目架构

前端使用nginx作为反向代理和负载均衡,后端部署多个tomcat实例。 Web应用直接部署到catalina_home/webapps目录下,访问时必须带上应用上下文路径:http://mmm.chench.com/mmm

解决方案

在前端nginx上配置根据请求参数进行路径重定向。 具体来说,就是判断用户请求uri是否为“/”,以此来判断用户是否只输入域名。 在location之前添加如下配置语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ($uri = '/') {
    rewrite ^/ https://$server_name/mmm/home.do permanent;
}

详细配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http {

    upstream 8080 {
        server 192.168.10.100:8080;
        server 192.168.10.200:8080;
    }

    server {
        listen 443 ssl;
        server_name  mmm.chench.com;
        ssl on;
        ssl_certificate /etc/nginx/ssl/mmm.chench.com.crt;
        ssl_certificate_key /etc/nginx/ssl/mmm.chench.com.key;
        
        if ($uri = '/') {
            rewrite ^/ https://$server_name/mmm/home.do permanent;
        }       

        location / {
            proxy_set_header                Host                    $http_host;
            proxy_set_header                X-Real-IP               $remote_addr;
            proxy_set_header                X-Forwarded-For         $remote_addr;
            proxy_pass http://8080;
        }
    }
    
}

当然,还可以直接使用location的精确匹配规则实现(使用等于符号将第一个location配置为精确匹配)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location = / {
    proxy_pass http://8080/mmm/home.do;
}

location / {
    proxy_set_header                Host                    $http_host;
    proxy_set_header                X-Real-IP               $remote_addr;
    proxy_set_header                X-Forwarded-For         $remote_addr;
    proxy_pass http://8080;
}

实现原理

1.nginx支持表达式判断请求uri并可以进行路径重定向。 2.nginx配置location支持精确匹配。

在nginx中可以通过如上2种方式实现直接通过域名访问应用。

【参考】 https://xuexb.com/post/nginx-url-rewrite.html nginx配置url重写 http://blog.sina.com.cn/s/blog_6d579ff40100wsip.html Nginx 变量漫谈(六)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx 真实线上案例
然后需要重启Nginx。重载Nginx配置文件不建议使用,但是可以用来检测配置文件是否有错误。
收心
2022/01/19
7460
【nginx】反代knife4j接口文档
无敌小菜鸟
2023/06/29
1.1K0
【nginx】反代knife4j接口文档
Nginx隐藏式跳转(浏览器URL跳转后保持不变) - 运维笔记
Nginx的隐藏式跳转可以实现将请求跳转到另一个网站的页面,并且浏览器中URL保持不变。Nginx配置中需要使用rewrite规则。下面提供两个示例来说明这种跳转需求的配置:
洗尽了浮华
2020/11/24
15.7K0
使用Nginx实现高效集群部署:前端与多个后端服务的完美结合
大家好,我是默语,擅长全栈开发、运维和人工智能技术。在本篇博客中,我将分享如何使用Nginx进行集群部署。这篇文章不仅适合新手学习,还能帮助有经验的开发者优化他们的部署架构。关键词:Nginx、集群部署、负载均衡、后端分发。
默 语
2024/11/22
6910
Nginx Proxy 知识点解析
区别只在于proxy_pass转发的路径后是否带 “/”, - 针对不带/, 假如我们访问的url=http://www.abc.com/testa/test.php, 则通过nginx代理后,请求的路径访问地址为http://www.abc.com/testa/test.php - 针对带/, 假如我们访问的url=http://www.abc.com/testb/test.php, 则通过nginx代理后,请求的路径访问地址为http://www.abc.com/test.php - 实现上述效果也可以通过rewrite来实现,代码如下
用户1560186
2019/11/19
2.3K0
Nginx配置Jenkins域名访问
server { listen 80; server_name jenkins.domain.tld; location / { proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_f
匿名用户的日记
2021/12/14
8K0
nginx服务器配置/websocket nginx 配置笔记
location的具体用法可以参看reference的第二篇文章介绍得非常详细。我这里使用/u/匹配我的路径以/u/开头下都使用这个下面{}中的配置。
全栈程序员站长
2022/07/07
2.5K0
nginx相关配置
gunicorn --bind=0.0.0.0:8000 dazhu.wsgi:application
超级大猪
2019/11/21
3270
我所有在线项目的Nginx配置内容
有几个小伙伴想看看我的Nginx是怎么配置的,我这里放出来吧。 其实没太多内容,都是基本的配置: 1、域名的代理(正向/反向); 2、IP地址获取; 3、SingleR Header配置; 4、前后端配置; 5、域名配置; 6、HTTPS配置; 7、负载配置; #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.
老张的哲学
2022/04/11
5100
Nginx proxy_pass后的url加不加/的区别
针对情况1 :如果访问url = http://server/abc/test.jsp,则被nginx代理后,请求路径会便问http://proxy_pass/abc/test.jsp,将test/ 作为根路径,请求test/路径下的资源
云知识Online
2018/05/03
2.5K0
Nginx——ubuntu安装Nginx并配置https
介绍: 我们在部署应用时,希望用到 Nginx ,并配置上 https 。我在网上看了很多文章,感觉都不是很系统。因此写下此文,以备日后使用。
凡人飞
2020/09/21
4.8K3
Nginx——ubuntu安装Nginx并配置https
Nginx 强制跳转到HTTPS
因为使用IdentityServer4,所以也配置了HTTPS安全协议。 但是如果俩个都使用的话,一是不好区分,二是没有太多的必要, 所以就想着取消掉HTTP的访问,全部转向安全协议, 使用Nginx重写转发即可轻松实现。 直接看Nginx配置吧: server { listen 80; server_name ids.neters.club; rewrite ^(.*)$ https://$host$1 permanent;#把ht
老张的哲学
2022/04/11
6560
Nginx配置文件nginx.conf全解
nginx配置文件nginx.conf的配置http、upstream、server、location等;
青山师
2023/05/05
7160
Nginx 常用的基础配置(web前端相关方面)
最近很多朋友通过趣站网问到Nginx配置前端 web 服务,所以特地写了这篇文章;希望能够帮助更多的朋友。
趣站网
2023/02/07
1.5K0
Nginx 常用的基础配置(web前端相关方面)
一次nginx返回422状态码的经历
后端使用Docker Compose部署一个代码片段管理应用:snibox,某天因为云服务卡死重启之后再次访问时,登录或退出都返回422状态码。 界面提示如下:
编程随笔
2022/09/23
1.2K0
nginx配置https转发到tomcat(使用自签名的证书)
命令:openssl genrsa -des3 -out server.key 1024
用户2409797
2018/08/30
6.6K0
HTTPS环境下Nginx反向代理Tomcat的正确配置方法
如图,很多应用场景下,我们都会选择nginx作为tomcat的前端,进行后端服务器的负载均衡以及一些流量处理工作,同时,HTTPS的配置也一般放在Nginx上完成,而Nginx和后端服务器采用HTTP通信。
你的明明呐丶
2022/06/27
2.2K0
HTTPS环境下Nginx反向代理Tomcat的正确配置方法
都是Nginx前缀惹的祸,FastDFS不能访问了!!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/12/24
2.3K0
都是Nginx前缀惹的祸,FastDFS不能访问了!!
一文带你搞懂Nginx如何配置Http、Https、WS、WSS!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2021/03/09
13K1
Tomcat捕获Nginx反向代理协议IP及端口配置
最近的技术调整,需要获取Nginx端请求方式是http还是https。我们当前的架构属于典型的互联网架构,Nginx+Tomcat+Mysql,启用了反向代理。当前并没有启用全站https,因此客户端发出的请求基于模块的方式使用http或者https协议。关于捕获这个请求的协议,我们需要使用到Nginx ngx_http_proxy_module这个模块中的proxy_set_header指令来进行配置。本文描述通过这个命令来实现捕获请求协议。
Leshami
2018/08/06
1.7K0
相关推荐
Nginx 真实线上案例
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验