`

Ngix + Tomcat + HTTPS

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

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

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

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:
<?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 中配置的一些安全策略会不起作用。
分享到:
评论

相关推荐

    ngix + mysql + php 安装包

    这个"ngix + mysql + php 安装包"提供了便捷的一站式解决方案,尤其适合初学者,免去了繁琐的配置过程。 **Nginx** 是一个高性能的HTTP和反向代理服务器,以其轻量级、高并发处理能力而闻名。它的事件驱动模型和非...

    ngix_redis_tomcat集群

    redis,redis,tomcat集群实例,tomcat-session-jar文件夹下是需要的jar包,启动nginx,redis,tomcat后在浏览器中输入http://localhost/test/test2.jsp进行测试。

    Windows下使用Nginx+Tomcat做负载均衡的完整步骤

    今天,王子与大家闲谈一下如何在Windows下使用Nginx+Tomcat做负载均衡的完整步骤,小伙伴们可以试着自己动手实践一下哦。 另外说明一点,本篇文章是纯实操文章,不涉及太多原理的解读,后期可能单独开一个专栏来深入...

    ngix tomcat整合.zip

    ngix tomcat整合.zip

    ngix tomcat整合

    ngix tomcat整合

    tomcat+nginx+mybatis+redis整合

    "Tomcat+Nginx+MyBatis+Redis"的整合就是一个典型的案例,它利用了Tomcat作为Java应用服务器,Nginx作为反向代理和负载均衡器,MyBatis作为持久层框架,以及Redis作为高速缓存系统。 一、部署启动多个Tomcat 1. ...

    在CentOS下安装Ngix服务及集群PHP、Tomcat

    2. 修改Tomcat配置文件:`/opt/tomcat/conf/server.xml`,添加多个节点,每个节点对应一个Tomcat实例。 ```xml &lt;Host name="tomcat1.example.com" appBase="webapps1" unpackWARs="true" autoDeploy="true"&gt; &lt;!-- ...

    tomcat+redis+nginx集群搭建所需jar包

    本压缩包提供了"tomcat+redis+nginx"集群搭建所需的jar包,旨在帮助开发者实现高效的数据缓存和负载均衡。以下将详细讲解这些组件及它们在集群中的作用。 1. **Tomcat**:Tomcat是Apache软件基金会的Jakarta项目中...

    tomcat8+nginx1.4+jdk8配置session共享

    在构建分布式系统时,Session共享是一个关键问题,特别是在使用多个应用服务器(如Tomcat)和负载均衡器(如Nginx)的环境中。本配置主要针对"tomcat8+nginx1.14+jdk8"的环境,目的是实现Session数据在多台Tomcat...

    宝塔面板配置文件记录.md

    宝塔面板Tomcat,Ngix等文件配置以及设置记录

    nginx配置https之后,https请求被调转到http问题

    upstream local_tomcat_wechat{  server 127.0.0.1:80 weight=2 fail_timeout=1s; }   server {  listen 443;  server_name www.xxxx.com;  error_log /nginx/log/www.xxxx.com.error.log  warn;  ssl on; ...

    springboot+mybatis+mysql

    它内置了Tomcat或Jetty服务器,可以无需额外配置即可运行。SpringBoot通过“约定优于配置”的原则,减少了大量Spring应用的XML配置。同时,它提供了丰富的起步依赖(Starter POMs),开发者只需引入相应的依赖,就...

    nginx-1.8.0

    ngix-1.8.0下载,windows版本,使用方法:解压该文件夹,进入config文件下的nginx.conf,将其中的tomcat端口更改为目前正在使用的tomcat端口,location改为目前项目的html项目路径即可

    nginx 解决首页跳转问题详解

    上面的配置定义了一个名为csdn-tomcat的服务器组,其中包含了两个Tomcat服务器的地址。 ### 首页重定向配置 在Nginx配置文件中,server块用于定义Nginx监听的端口和域名。通过配置server块,可以实现对特定域名的...

    ngnix.rar,服务代理,很好用的哦

    在实际应用中,Nginx常与PHP-FPM(FastCGI Process Manager)或其它应用服务器(如Apache、Tomcat)配合,形成LAMP(Linux + Apache + MySQL + PHP)或LEMP(Linux + Nginx + MySQL + PHP)架构,实现动态内容的处理...

    使用Nginx代理上网的方法

    我一般都是使用 nginx 做反向代理 tomcat 和其他应用的,其实 nginx 也是支持正向代理的 所谓正向代理就是内网用户通过网关访问外部资源,就是电脑上网时浏览器设置下 http 代理地址访问互联网 而反向代理就是外部...

Global site tag (gtag.js) - Google Analytics