`
m635674608
  • 浏览: 5041564 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Nginx + Tomcat + HTTPS 配置原来不需要在 Tomcat 上启用 SSL 支持

 
阅读更多

支持

云服务器免费,最高3个月,购买抽万元红包>>> »  

之前在网上搜索到的很多文章在描述 Nginx + Tomcat 启用 HTTPS 支持的时候,都必须在 Nginx 和 Tomcat 两边同时配置 SSL 支持。但我一直在想为什么就不能按照下面的方式来配置呢?就是 Nginx 上启用了 HTTPS,而 Nginx 和 Tomcat 之间走的却是普通的 HTTP 连接。但是搜索很多没有解决办法,最后还是老老实实的 Nginx 和 Tomcat 同时配置的 SSL 支持。

最近给 OSChina 买了个新的支持 *.oschina.net 泛域名的证书,然后我又开始偷懒的想为什么 Tomcat 一定要配 HTTPS 呢? 没道理啊。然后潜心搜索终于找到了解决方案。原来却是如此的简单。

最终配置的方案是浏览器和 Nginx 之间走的 HTTPS 通讯,而 Nginx 到 Tomcat 通过 proxy_pass 走的是普通 HTTP 连接。

下面是详细的配置(Nginx 端口 80/443,Tomcat 的端口 8080):

Nginx 这一侧的配置没什么特别的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
upstream tomcat {
    server 127.0.0.1:8080 fail_timeout=0;
}
 
# HTTPS server
server {
    listen       443 ssl;
    server_name  localhost;
 
    ssl_certificate      /Users/winterlau/Desktop/SSL/oschina.bundle.crt;
    ssl_certificate_key  /Users/winterlau/Desktop/SSL/oschina.key;
 
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
 
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
 
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_redirect off;
        proxy_connect_timeout      240;
        proxy_send_timeout         240;
        proxy_read_timeout         240;
        # note, there is not SSL here! plain HTTP is used
        proxy_pass http://tomcat;
    }
}

其中最为关键的就是 ssl_certificate 和 ssl_certificate_key 这两项配置,其他的按正常配置。不过多了一个 proxy_set_header X-Forwarded-Proto https; 配置。

最主要的配置来自 Tomcat,下面是我测试环境中的完整 server.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443"
               proxyPort="443"/>
 
    <Engine name="Catalina" defaultHost="localhost">
 
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <Valve className="org.apache.catalina.valves.RemoteIpValve"
                  remoteIpHeader="x-forwarded-for"
                  remoteIpProxiesHeader="x-forwarded-by"
                  protocolHeader="x-forwarded-proto"
            />
            <Context path="" docBase="/oschina/webapp" reloadable="false"/>
      </Host>
    </Engine>
  </Service>
</Server>

上述的配置中没有什么特别的,但是特别特别注意的是必须有 proxyPort="443",这是整篇文章的关键,当然 redirectPort 也必须是 443。同时 <Value> 节点的配置也非常重要,否则你在 Tomcat 中的应用在读取 getScheme() 方法以及在 web.xml 中配置的一些安全策略会不起作用。

 

http://www.oschina.net/question/12_213459?fromerr=r6ad3Hjz

http://my.oschina.net/u/658145/blog/75093

分享到:
评论

相关推荐

    nginx+tomcat8 ssl使用https访问

    - Tomcat本身不需要直接配置HTTPS,因为Nginx会处理这部分。但是,需要确保Tomcat应用监听8080等非安全端口,以便Nginx可以将请求转发到它。 4. **反向代理设置**: - 在Nginx配置中,需要添加location块来定义...

    nginx+tomcat+ssl实现负载均衡

    在Linux上,需要编译安装,先安装依赖如PCRE库,然后下载Nginx源码,配置并编译安装。配置完成后,启动Nginx,通过访问`http://server_ip`检查安装是否成功。 **总结** Nginx+Tomcat+SSL的架构充分利用了Nginx的...

    Nginx+tomcat+ssl安装配置手册.pdf

    在Nginx上配置负载均衡,将请求转发到各个Tomcat实例,同时在Tomcat的`server.xml`中设置`jvmRoute`以实现Session同步。 **环境安装:** 1. **Windows安装**:解压Nginx的.zip文件,运行`nginx.exe`启动服务,通过...

    nginx+tomcat反向代理安装配置

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而`nginx`和`tomcat`的结合使用就是一种常见的解决方案。`nginx`作为一款高性能的反向代理...在实际应用中,可以根据需求调整配置,例如添加SSL支持、缓存设置等。

    java的web项目的war包实现nginx+tomcat+https的快速和安全的配置

    "java web项目的war包实现nginx+tomcat+https的快速和安全的配置" 本资源主要讲述了如何将 Java 开发的 war 包部署到 Linux 服务器上,并使用 Nginx 和 Tomcat 实现负载均衡和 HTTPS 访问,同时支持 IPv6 网络的...

    4 lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.docx

    4. 下载并安装Tomcat,配置Tomcat服务器,确保每个实例运行在不同的端口上。 5. 配置LVS主、备节点,设置VIP,并在主节点上部署keepalived。 6. 配置Nginx,包括反向代理、负载均衡策略、SSL证书等。 7. 测试系统,...

    nginx+tomcat+memcached

    3. **配置Nginx**:在Nginx配置文件中,启用负载均衡,并根据Session ID将请求路由到保存相应Session的服务器。这可以通过使用`ip_hash`或者`hash`指令实现,使得相同Session ID的请求总是被发送到同一台Tomcat...

    redis+tomcat+nginx负载均衡配置

    - **配置Tomcat**:在每个Tomcat实例上启用Session复制或设置为使用Redis作为Session存储。 - **配置Nginx**:安装Nginx并配置负载均衡策略,比如将`upstream`块定义为后端Tomcat服务器,然后在`server`块中使用`...

    nginx、tomcat安装免费ssl安全证书配置

    在互联网世界中,HTTPS协议是确保...至此,我们已经成功地在Nginx和Tomcat上配置了阿里云的免费SSL证书,实现了HTTPS访问。这不仅提升了网站的安全性,也提高了用户的信任度。注意定期更新证书,保持其有效性和安全性。

    linux下Nginx+tomcat整合的安装与配置.pdf

    在编译前,可以使用./configure命令配合参数定制Nginx的功能模块,例如启用SSL模块和压缩模块等。编译完成后,需要通过make和make install命令来安装Nginx。配置文件nginx.conf是Nginx的核心配置文件,需要配置工作...

    win7下nginx+tomcat负载均衡

    本教程将详细介绍如何在Win7系统上配置Nginx作为反向代理,实现对多个Tomcat实例的负载均衡。 1. **Nginx介绍** Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、稳定性和高并发处理能力而著名。在负载均衡...

    nginx+tomcat+redis+mysq集群部署方案.docx

    安装Nginx,配置http、server和location段,设置负载均衡策略(如轮询、权重分配等),并开启SSL支持,提供安全的HTTPS服务。 3.5 数据库的安装与配置 安装MySQL数据库,创建所需的数据表,配置连接池,设置访问...

    Windows+Nginx+Tomcat搭建负载均衡和集群的tomcat压缩包

    7. **安全考虑**:部署在生产环境时,确保Nginx和Tomcat都有相应的安全配置,比如防火墙规则、SSL/TLS加密、限制不必要的端口访问等。 通过以上步骤,你将拥有一个基于Windows、Nginx和Tomcat的负载均衡和集群系统...

    Nginx+Tomcat+Https 服务器负载均衡配置实践方案详解

    本文将深入探讨如何配置Nginx+Tomcat+Https的服务器负载均衡环境,这对于大型网站或高流量应用来说至关重要,可以提高系统的可用性和响应速度。我们将按照以下步骤进行讲解: 1. **JDK安装配置** - 首先,我们需要...

    Nginx+Tomcat的集群搭建操作步骤

    在配置过程中,需要指定安装路径、配置文件路径、日志路径等参数,并启用SSL、FLV、GZIP静态模块以及HTTP状态模块等。在启动Nginx时,可能会遇到如用户不存在或目录未创建等问题,需要相应地添加用户或创建缺失的...

    Nginx+Tomcat配置[归类].pdf

    Nginx和Tomcat是两种常见的Web服务器,它们在软件开发中经常被组合使用,以实现高效、稳定的服务。Nginx以其高性能、低资源消耗和强大的反向代理能力著称,而Tomcat则是一个专注于Java应用的Servlet容器。本文将深入...

    Apache+tomcat+ssl配置+相关插件

    当我们需要在Apache和Tomcat环境中实现HTTPS支持,即安全的HTTP服务时,就需要进行Apache+Tomcat+SSL的配置,并可能需要用到一些相关插件来辅助完成这个过程。 首先,让我们详细了解一下SSL配置的基础知识。SSL证书...

    nginx+tomcat+redis服务器集群session共享

    4. **配置Nginx**:在Nginx的配置文件中,启用负载均衡器,使用ip_hash或cookie来实现粘滞会话,确保来自同一用户的请求始终路由到同一台Tomcat服务器。 5. **测试与监控**:部署应用并进行测试,确保session在不同...

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    1,tomcat8的配置: 1.1修改tomcat8.x/conf/context.xml的配置如下: &lt;!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file ...

Global site tag (gtag.js) - Google Analytics