腾讯云:Nginx+Tomcat+SSL证书搭建高性能负载均衡集群

存储架构 2017-11-15

准备:

一、环境

jdk-1.8
nginx-1.12.1
tomcat-7.0.79

jdk与nginx版本

1、防火墙开通80和443端口,参看CentOS7.x之防火墙

2、腾讯云安全组开放80和443端口

腾讯云服务器安全组开放80个443端口

二、JDK1.8安装

参见 腾讯云服务器:CentOS安装MySQL、JDK、Tomcat及web项目发布外网实战
中jdk安装部分

三、Tomcat安装

#如果没有此目录,则创建
cd /usr/local/tomcat
#下载tomcat-7.0.79
wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz
#解压并重命名分别为tomcat-7.0.79_01、tomcat-7.0.79_02(server.conf中的端口下文有详细配置)
tar -xzvf apache-tomcat-7.0.79.tar.gz

四、Web项目

1、tomcat-7.0.79_01中的WebProject项目index.jsp内容

WebProject01中的jsp内容

tomcat-7.0.79_01中的server.conf配置如下




  
  <!-- Security listener. Documentation at /docs/config/listeners.html
  
  -->
  
  
  
  
  
  
  
  

  
  
    
    
  

  
  

    
    <!--
    
    -->


    
    
    
    <!--
    
    -->
    
    <!--
    
    -->

    
    


    

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    
    -->
    

      
      <!--
      
      -->

      
      
        
        
      

      
      
        
        <!--
        
        -->

        
        
      
    
  

2、tomcat-7.0.79_02中的WebProject项目index.jsp内容

WebProject02中的jsp内容

tomcat-7.0.79_02中的server.conf中的配置如下




  
  <!-- Security listener. Documentation at /docs/config/listeners.html
  
  -->
  
  
  
  
  
  
  
  

  
  
    
    
  

  
  

    
    <!--
    
    -->


    
    
    
    <!--
    
    -->
    
    <!--
    
    -->

    
    


    

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    
    -->
    

      
      <!--
      
      -->

      
      
        
        
      

      
      
        
        <!--
        
        -->

        
        

      
    
  

3、server.conf配置不同之处有四

#1_01


#1_02
#2_01


#2_02
#3_01

#3_02
#4_01

      

#4_02

      

说明:

  • 将WebProject项目在Eclipse或者MyEclipse中打成war包上传至tomcat启动目录中,tomcat启动一次后,会自动解压war包,将tomcat关闭后,即可删除war包
  • 将两个tomcat分别启动

五、Nginx安装

1、下载、解压

cd /usr/local/src
wget http://nginx.org/download/nginx-1.12.1.tar.gz   #稳定版
tar nginx-1.12.1.tar.gz
cd nginx-1.12.1

2、安装准备

yum install gcc gcc-c++ -y  #安装gcc和c++包
yum -y install pcre pcre-devel zlib-devel openssl-devel
  • SSL功能需要openssl库,官网地址
  • gzip模块需要zlib库,官网地址
  • rewrite模块需要pcre库(实际nginx中也可以使用return进行301跳转)官网地址

3、安装Nginx

cd /usr/local/src/nginx-1.12.1
 #安装到指定目录
 ./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module
 #编译
 make && make install
  • --prefix=/usr/local/nginx/ #nginx安装的根目录
  • --with-http_stub_status_module #监控nginx运行状态
  • --with-http_ssl_module #添加ssl模块

有关nginx参数详解,请参考 nginx安装及编译参数详解

4、 nginx.conf参数配置(图文)

nginx.conf配置参数_01

nginx.conf配置参数_02

xxx.cn全部以你申请的域名替换

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    
    upstream tomcat7_cluster{
        server localhost:8080 weight=5;
        server localhost:8081 weight=5;
    }
    server {
        listen      80;
        server_name www.xxx.cn;

        access_log logs/jmszwzr.access.log main;
        error_log logs/jmszwzr.error.log;
        
    #rewrite ^(.*) https://$server_name$1 permanent;
    #弃用rewrite,使用return效率更高
    return 301 https://$server_name$request_uri;
        location / {
            proxy_pass http://tomcat7_cluster;
        }
    }

    # HTTPS server
    server {
        listen       443 ssl;
        #server_name  www.xxx.cn;
        server_name  localhost;
        
        #ssl on;    
        access_log logs/ssl.access.log main;
        error_log logs/ssl.error.log;
    
        #为虚拟主机指定pem格式的证书文件
        ssl_certificate      1_www.xxx.cn_bundle.crt;
        #为虚拟主机指定私钥文件
        ssl_certificate_key  2_www.xxx.cn.key;

        #ssl_session_cache    shared:SSL:1m;
        #客户端能够重复使用存储在缓存中的会话参数时间
        ssl_session_timeout  10m;

        #指定使用的ssl协议
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #指定许可的密码描述
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        #SSLv3和TLSv1协议的服务器密码需求优先级高于客户端密码
        ssl_prefer_server_ciphers  on;

         location / {
            proxy_pass http://tomcat7_cluster;
        }
    }
}

配置好nginx.conf文件之后,可以进行验证配置是否正确

配置nginx.conf是否正确

#在nginx根目录下
./sbin/nginx    #启动nginx
./sbin/nginx -s reload  #软重启

六、浏览器访问

访问两个项目的几率可在nginx中配置

第一次访问

第二次访问

结尾:以上只是简单的将nginx作为反向代理服务器,配以https加密访问,实际情况中,还有很多需要添加的模块和优化的地方。如tomcat集群下的session共享、nginx优化等问题。

小白初入,如有错误,欢迎各位简友指正,在此感谢!

资料来源或参考

您可能感兴趣的

apache和nginx那点事儿–阻塞和异步 先明白的事儿:当一个程序在执行的时候,一般会创建一个进程,也可以有多个进程。一个进程至少会创建一个线程,多个线程共享一个程序进程的内存。程序的运行最终是靠线程来完成操作的。线程的数量跟CPU核数有关,一个核最多能发出两个线程。线程的操作主要分为:一:给CPU进行程序命令的执行。二:IO的操作(...
Is nginx / node.js / postgres a very scalable arch... I have an app running with: one instance of nginx as the frontend (serving static file) a cluster of node.js application for ...
CentOS 7 tomcat 7.0.54 的功能实现及详解 一、 jdk 安装配置 # yum install java-1.8.0-openjdk-devel (依赖的java-1.8.0-openjdk,java-1.8.0-openjdk,headless也会被安装 ) # alternatives -h # vim /etc/profile.d...
第九周加密及DNS 1、简述常见加密算法及常见加密算法原理,最好使用图例解说 單向加密算法:提取數據特征碼,將特徵碼整體附加到明文後,再進行傳遞。接收到數據後用同樣的特徵碼還原明文 ,並與發過來的特徵碼比對,如果一樣就沒問題。 1、輸入一樣,輸出必然相同,所以叫特徵碼 2、雪崩效...
Java Developer’s Guide to SSL Certificates Overview When developing web applications, we often need to integrate with other applications using SSL. This could be over different protocols s...
0
简书

责编内容来自:简书 (本文源链)
阅读提示:酷辣虫无法对本内容的真实性提供任何保证,请自行验证并承担相关的风险与后果!
本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。