nginx https反向代理tomcat的2种实现方法

 更新时间:2017年12月29日 08:38:32   作者:海底苍鹰  
这篇文章主要给大家介绍了关于nginx https反向代理tomcat的2种实现方法,第一种方法是nginx配置https,tomcat也配置https,第二种方法是nginx采用https,tomcat采用http,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。

反向代理

在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别。

nginx做前端代理分发,tomcat处理请求。nginx反代tomcat实现https有二个方法。

一、nginx配置https,tomcat也配置https

1、nginx配置https

upstream https_tomcat_web { 
  server 127.0.0.1:8443; 
} 
server { 
  listen  443; 
  server_name www.test.com; 
  index index.html; 
  root /var/www/html/test; 
  ssl on; 
  ssl_certificate /etc/nginx/go.pem; 
  ssl_certificate_key /etc/nginx/go.key; 
  ssl_session_timeout 5m; 
  ssl_protocols SSLv2 SSLv3 TLSv1.2; 
#  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; 
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
  ssl_prefer_server_ciphers on; 
  location ~ ^/admin { 
   proxy_pass https://https_tomcat_web; //是https的 
   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; 
   client_max_body_size  100m; 
   client_body_buffer_size 256k; 
   proxy_connect_timeout  60; 
   proxy_send_timeout   30; 
   proxy_read_timeout   30; 
   proxy_buffer_size   8k; 
   proxy_buffers    8 64k; 
   proxy_busy_buffers_size 64k; 
   proxy_temp_file_write_size 64k; 
  } 
  error_page 404 /404.html; 
  location = /40x.html { 
  } 
  error_page 500 502 503 504 /50x.html; 
  location = /50x.html { 
  } 
} 

2、tomcat的https配置,配置文件server.xml

<Service name="Catalina"> 
 <Connector port="8001" protocol="HTTP/1.1" 
 connectionTimeout="20000" 
 redirectPort="8443" /> 
 <Connector port="8091" 
 protocol="AJP/1.3" 
 redirectPort="8443" /> 
//添加以下内容 
 <Connector port="8443" 
 protocol="HTTP/1.1" 
 SSLEnabled="true" 
 scheme="https" 
 secure="false" 
 keystoreFile="cert/gotom.pfx" 
 keystoreType="PKCS12" 
 keystorePass="214261272770418" 
 clientAuth="false" 
 SSLProtocol="TLSv1+TLSv1.1+TLSv1.2" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256" /> 
 
 ..................省略.................... 
 </Service> 

配置好后重新启动nginx,tomcat,就可以https访问了,这也是我现在采用的配置方式 。

二、nginx采用https,tomcat采用http

1、nginx配置https

upstream https_tomcat_web { 
  server 127.0.0.1:8001; 
} 
server { 
  listen  443; 
  server_name www.test.com; 
  index index.html; 
  root /var/www/html/test; 
  ssl on; 
  ssl_certificate /etc/nginx/go.pem; 
  ssl_certificate_key /etc/nginx/go.key; 
  ssl_session_timeout 5m; 
  ssl_protocols SSLv2 SSLv3 TLSv1.2; 
#  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; 
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
  ssl_prefer_server_ciphers on; 
  location ~ ^/admin { 
   proxy_pass http://https_tomcat_web; //是http的 
   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; 
   client_max_body_size  100m; 
   client_body_buffer_size 256k; 
   proxy_connect_timeout  60; 
   proxy_send_timeout   30; 
   proxy_read_timeout   30; 
   proxy_buffer_size   8k; 
   proxy_buffers    8 64k; 
   proxy_busy_buffers_size 64k; 
   proxy_temp_file_write_size 64k; 
  } 
  error_page 404 /404.html; 
  location = /40x.html { 
  } 
  error_page 500 502 503 504 /50x.html; 
  location = /50x.html { 
  } 
} 

2、tomcat的http配置,配置文件server.xml

<Service name="Catalina"> 
 <Connector port="8001" protocol="HTTP/1.1" 
 connectionTimeout="20000" 
 redirectPort="443" /> //在这里重新定向到了443端口 
 
 <Connector port="8091" 
 protocol="AJP/1.3" 
 redirectPort="443" /> 
 
 ..................省略.................... 
 </Service> 

重启nginx,tomcat,https就配置好了。

不管是第一种方法,还是第二种方法,如果通过http,直接访问8001端口,浏览器都会提示你不安全的访问,因为本身是http,确被重定向到了https。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • 编写Go程序对Nginx服务器进行性能测试的方法

    编写Go程序对Nginx服务器进行性能测试的方法

    这篇文章主要介绍了编写Go程序对Nginx服务器进行性能测试的方法,包括对其负载均衡和缓存等方面的测试,极力推荐!需要的朋友可以参考下
    2015-06-06
  • nginx服务器中access_log日志分析与配置详解

    nginx服务器中access_log日志分析与配置详解

    通过访问日志,可以知晓用户的地址,网站的哪些部分最受欢迎,用户的浏览时间,对大多数用户用的的浏览器做出针对性优化。下面这篇文章主要给大家介绍了关于nginx服务器中access_log日志分析与配置的相关资料,需要的朋友可以参考下。
    2017-12-12
  • nginx centos 服务开机启动设置实例详解

    nginx centos 服务开机启动设置实例详解

    这篇文章主要介绍了nginx centos 服务开机启动设置实例详解的相关资料,这里对服务开机启动做了详细的步骤介绍,需要的朋友可以参考下
    2016-11-11
  • Nginx搭建负载均衡集群的实现

    Nginx搭建负载均衡集群的实现

    这篇文章主要介绍了Nginx搭建负载均衡集群的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Nginx解决前端访问资源跨域问题的方法详解

    Nginx解决前端访问资源跨域问题的方法详解

    这篇文章主要给大家介绍了关于Nginx解决前端访问资源跨域问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 一篇文章彻底搞懂Nginx的.conf文件路径配置

    一篇文章彻底搞懂Nginx的.conf文件路径配置

    nginx.conf文件是Nginx的主配置文件,它包含了Nginx的全局配置和各个虚拟主机的配置,这篇文章主要给大家介绍了关于Nginx的.conf文件路径配置的相关资料,需要的朋友可以参考下
    2023-12-12
  • nginx如何配置同一个端口转发多个项目

    nginx如何配置同一个端口转发多个项目

    这篇文章主要介绍了nginx如何配置同一个端口转发多个项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Windows下Nginx + PHP5 的安装与配置方法

    Windows下Nginx + PHP5 的安装与配置方法

    Nginx 是一个轻量级的高性能 Http WebServer,以事件驱动方式编写,因此相比 Apache 而言,Nginx 更加稳定、性能更好,而且配置简单,资源占用较低。以下是我在 Windows 7 安装中 Nginx 和 PHP5.3 的步骤。
    2010-07-07
  • nginx前后端同域名配置的方法实现

    nginx前后端同域名配置的方法实现

    这篇文章主要介绍了nginx前后端同域名配置的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • nginx中斜杠(‘/‘)的具体使用

    nginx中斜杠(‘/‘)的具体使用

    在Nginx配置的过程中,斜杠(/)经常使用到,它们不仅可以区分不同的路径,还有其他的作用,本文就详细的介绍了nginx中斜杠(‘/‘)的具体使用,感兴趣的可以了解一下,感兴趣的可以了解一下
    2023-10-10

最新评论