Nginx+tomcat+ssl安装配置手册
Nginx配置详解

Nginx配置详解序言Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。
从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。
支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。
并且支持很多第三方的模块扩展。
Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
牛逼吹的差不多啦,如果你还不过瘾,你可以百度百科或者一些书上找到这样的夸耀,比比皆是。
Nginx常用功能1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
这里我给来2张图,对正向代理与反响代理做个诠释,具体细节,大家可以翻阅下资料。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。
Nginx 可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。
并且Nginx对返回结果进行错误页跳转,异常判断等。
如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2、负载均衡Nginx提供的负载均衡策略有2种:内置策略和扩展策略。
内置策略为轮询,加权轮询,Ip hash。
扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
上3个图,理解这三种负载均衡算法的实现Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
3、web缓存Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。
H3C SSL配置

操作手册安全分册 SSL 目录目录第1章 SSL配置......................................................................................................................1-11.1 SSL简介.............................................................................................................................1-11.2 SSL配置任务简介...............................................................................................................1-21.3 配置SSL服务器端策略.......................................................................................................1-21.3.1 配置准备..................................................................................................................1-21.3.2 配置SSL服务器端策略.............................................................................................1-31.3.3 SSL服务器端策略典型配置举例..............................................................................1-31.4 配置SSL客户端策略...........................................................................................................1-51.4.1 配置准备..................................................................................................................1-51.4.2 配置SSL客户端策略................................................................................................1-61.5 SSL显示和维护..................................................................................................................1-61.6 常见配置错误举例..............................................................................................................1-71.6.1 SSL握手失败...........................................................................................................1-7本文中标有“请以实际情况为准”的特性描述,表示各型号对于此特性的支持情况可能不同,本节将对此进行说明。
linux下Nginx+tomcat整合的安装与配置

目的:搭建Nginx与tomcat整合,用Nginx代替apache步骤:一、安装Nginx1、上传nginx-0.7.63.tar.gz至/usr/local2、执行如下命令解压nginx:1.#cd /usr/local2.#tar zxvf nginx-0.7.63.tar.gz3、编译安装nginx1.#cd nginx-0.7.632.#./configure --with-http_stub_status_module --with-http_ssl_module #启动server状态页和https模块执行完后会提示一个错误,说缺少PCRE library 这个是HTTP Rewrite 模块,也即是url静态化的包可上传pcre-7.9.tar.gz,输入如下命令安装:1.#tar zxvf pcre-7.9.tar.gz2.#cd pcre-7.93.#./configure4.#make5.#make install安装pcre成功后,继续安装nginx如果是ubuntu 或Debian系统请先安装# apt-get install libpcre3 libpcre3-dev原文:I need to compile few application and I need Perl 5 Compatible Regular Expression Library (PCRE). Under CentOS I can use a package called pcre-devel, but Debian do not have the same. How do I install pcre-devel under Debian / Ubuntu Linux?Perl-compatible regular expression library. PCRE has its own native API, but a set of "wrapper"functions that are based on the POSIX API are also supplied in the library libpcreposix. Note that this just provides a POSIX calling interface to PCRE: the regular expressions themselves still follow Perl syntax and semantics. The header file for the POSIX-style functions is called pcreposix.h. To install PCRE, type thy following command:# apt-get update# apt-get install libpcre3 libpcre3-dev1.#cd nginx-0.7.632.#./configure3.#make4.#make install4、nginx安装成功后的安装目录为/usr/local/nginx在conf文件夹中新建proxy.conf,用于配置一些代理参数,内容如下:01.#!nginx (-)02.# proxy.conf03.proxy_redirect off;04.proxy_set_header Host $host;05.proxy_set_header X-Real-IP $remote_addr; #获取真实ip06.#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获取代理者的真实ip07.client_max_body_size 10m;08.client_body_buffer_size 128k;09.proxy_connect_timeout 90;10.proxy_send_timeout 90;11.proxy_read_timeout 90;12.proxy_buffer_size 4k;13.proxy_buffers 4 32k;14.proxy_busy_buffers_size 64k;15.proxy_temp_file_write_size 64k;编辑安装目录下conf文件夹中的nginx.conf,输入如下内容001.#运行nginx所在的用户名和用户组002.#user www www;003.004.#启动进程数005.worker_processes 8;006.#全局错误日志及PID文件007.error_log /usr/local/nginx/logs/nginx_error.log crit;008.009.pid /usr/local/nginx/nginx.pid;010.011.#Specifies the value for maximum file descriptors that can be opened by this process. 012.013.worker_rlimit_nofile 65535;014.#工作模式及连接数上限015.events016.{017. use epoll;018. worker_connections 65535;019.}020.#设定http服务器,利用它的反向代理功能提供负载均衡支持021.http022.{023. #设定mime类型024. include mime.types;025. default_type application/octet-stream;026. include /usr/local/nginx/conf/proxy.conf;027. #charset gb2312;028. #设定请求缓冲029. server_names_hash_bucket_size 128;030. client_header_buffer_size 32k;031. large_client_header_buffers 4 32k;032. client_max_body_size 8m;033.034. sendfile on;035. tcp_nopush on;036.037. keepalive_timeout 60;038.039. tcp_nodelay on;040.041.# fastcgi_connect_timeout 300;042.# fastcgi_send_timeout 300;043.# fastcgi_read_timeout 300;044.# fastcgi_buffer_size 64k;045.# fastcgi_buffers 4 64k;046.# fastcgi_busy_buffers_size 128k;047.# fastcgi_temp_file_write_size 128k;048.049.# gzip on;050.# gzip_min_length 1k;051.# gzip_buffers 4 16k;052.# gzip_http_version 1.0;053.# gzip_comp_level 2;054.# gzip_types text/plain application/x-javascript text/css application/xml;055.# gzip_vary on;056.057. #limit_zone crawler $binary_remote_addr 10m;058. ###禁止通过ip访问站点059. server{060. server_name _;061. return 404;062. }063.064.065. server066. {067. listen 80;068. server_name localhost;069. index index.html index.htm index.jsp;#设定访问的默认首页地址070. root /home/www/web/ROOT;#设定网站的资源存放路径071.072. #limit_conn crawler 20;073.074. location ~ .*.jsp$ #所有jsp的页面均交由tomcat处理075. {076. index index.jsp;077. proxy_pass http://localhost:8080;#转向tomcat处理078. }079.080.081. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #设定访问静态文件直接读取不经过tomcat 082. {083. expires 30d;084. }085.086. location ~ .*\.(js|css)?$087. {088. expires 1h;089. }090.091.#定义访问日志的写入格式092. log_format access '$remote_addr - $remote_user [$time_local] "$request" '093. '$status $body_bytes_sent "$http_referer" '094. '"$http_user_agent" $http_x_forwarded_for';095. access_log /usr/local/nginx/logs/localhost.log access;#设定访问日志的存放路径096.097. }098.099.100.101.102.}5、修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:1.#/usr/local/nginx/sbin/nginx -t如果屏幕显示以下两行信息,说明配置文件正确:1.the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok2.the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully如果提示unknown host,则可在服务器上执行:ping 如果也是同样提示unknown host则有两种可能:a、服务器没有设置DNS服务器地址,查看/etc/resolv.conf下是否设置,若无则加上b、防火墙拦截6、启动nginx的命令1.#/usr/local/nginx/sbin/nginx这时,输入以下命令查看Nginx主进程号:1.ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'7、停止nginx的命令1.#/usr/local/nginx/sbin/nginx -s stop8、在不停止Nginx服务的情况下平滑变更Nginx配置a、修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:1./usr/local/nginx/sbin/nginx -t如果屏幕显示以下两行信息,说明配置文件正确:1.the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok2.the configuration file /usr/local/nginx/conf/nginx.conf was tested successfullyb、这时,输入以下命令查看Nginx主进程号:1.ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'屏幕显示的即为Nginx主进程号,例如:6302这时,执行以下命令即可使修改过的Nginx配置文件生效:1.kill -HUP 6302或者无需这么麻烦,找到Nginx的Pid文件:1.kill -HUP `cat /usr/local/nginx/nginx.pid`9、nginx启动好后启动tomcat,此时输入http://主机ip地址即可看到“My web!”三、其他stub_status语法: stub_status on默认值: None作用域: location创建一个location 区域启用stub_status"stub status" 模块返回的状态信息跟mathopd's 的状态信息很相似. 返回的状态信息如下:1.Active connections: 2912.server accepts handled requests3.16630948 16630948 310704654.Reading: 6 Writing: 179 Waiting: 106active connections -- 对后端发起的活动连接数server accepts handled requests -- nginx 总共处理了16630948 个连接, 成功创建16630948 次握手(证明中间没有失败的), 总共处理了31070465 个请求(平均每次握手处理了 1.8个数据请求)reading -- nginx 读取到客户端的Header信息数writing -- nginx 返回给客户端的Header信息数waiting -- 开启keep-alive 的情况下,这个值等于active - (reading + writing),意思就是Nginx 说已经处理完正在等候下一次请求指令的驻留连接。
安装手册

目录1系统环境 (2)1.1硬件环境 (2)1.2软件环境 (2)2服务器安装 (2)2.1服务器安装准备 (2)2.2安装 (3)2.2.1 IE (3)2.2.2 Microsoft SQL Server 2000 (5)2.2.3 JDK (17)2.2.4 Framework3.5 (23)2.2.5 tomcat 5.0 (26)2.2.6 Flash安装 (35)1系统环境1.1硬件环境大屏展示系统服务器的硬件要求为:CPU:2G以上;内存:2G以上;硬盘:100G以上;网卡:10M网络适配器或者10M/100M网络适配器;大屏幕(4480*1440)两个小屏幕(2240*1440)1.2软件环境大屏幕显示配置系统软件的要求为:操作系统:Windows 2000 XP;数据库系统软件:sql2000 Personal;Flash软件:install_flash_player_11_active_x.exe;IE:IE8以上版本Framework:Framework3.52服务器安装2.1服务器安装准备tomcat:tomact5.0.rar数据库:Microsoft SQL Server 2000 四合一.rarJDK: j2sdk-1_4_2_03IE:IE8-Windows1XP-x86-CHSFlash:install_flash_player_11_active_x.exe2.2 安装2.2.1 IE1、双击IE8-WindowsXP-x86-CHS,如图2-1图 1-12、根据自己意愿选择后,点击下一步按钮,获得图2-2所示界面图1-22、阅读许可条款后选择,获得图2-3所示界面图1-33、点击获得图2-4所示界面图1-44、待安装完成后会自动跳转到图2-5图1-55、点击重启电脑即可2.2.2 Microsoft SQL Server 20001、双击AUTORUN.EXE,安装程序自行启动。
HTTP2.0学习与Nginx和Tomcat配置HTTP2.0

HTTP2.0学习与Nginx和Tomcat配置HTTP2.0⽬录⼀、HTTP2.01.1 简介1.2 新的特性1.3 h2c 的⽀持度⼆、Nginx 对 http2.0 的⽀持2.1 Nginx 作为服务端使⽤http2.02.2 Nginx 作为客户端使⽤ http2.0三、Tomcat 对 HTTP2.0 的⽀持3.1.1、依赖环境3.1.2、h2c 配置(⾮加密)3.1.3、h2 配置(加密)3.1 、Tomcat 8.5四、扩展问题解决⽅法⼀(没⾏通)⽅法⼆(可⾏)4.1、测试 h2c4.2、查看浏览器是否⽀持 http2.04.3、查看⽹站是否⽀持 http2.04.4、JAVA8 如何⽀持 HTTP2.0 TLS⼀、HTTP2.01.1 简介HTTP/2(超⽂本传输协议第2版,最初命名为HTTP 2.0),简称为h2(基于TLS/1.2或以上版本的加密连接)或h2c(⾮加密连接),是HTTP协议的的第⼆个主要版本。
1.2 新的特性具体可以看这篇⽂章:https:///a/11900000134207841. 头数据压缩 Data compression of HTTP headers2. 服务器推送 HTTP/2 Server Push3. 管线化请求 Pipelining of requests.4. 对数据传输采⽤多路复⽤,让多个请求合并在同⼀ TCP 连接内 Multiplexing multiple requests over a single TCP connection,因为每⼀个tcp 连接在创建的时候都需要耗费资源,⽽且在创建初期,传输也是⽐较5. 采⽤了⼆进制⽽⾮明⽂来打包、传输客户端<——>服务器间的数据。
1.3 h2c 的⽀持度HTTP/2 的设计本⾝允许⾮加密的 HTTP 协议,也允许使⽤TLS 1.2或更新版本协议进⾏加密。
协议本⾝未要求必须使⽤加密,惟多数客户端 (例如 Firefox, Chrome, Safari, Opera, IE, Edge) 的开发者声明,他们只会实⼆、Nginx 对 http2.0 的⽀持2.1 Nginx 作为服务端使⽤http2.0使⽤ http2.0 的条件1. Nginx 版本⼤于或等于 1.9.5 。
nginx安装升级及配置详解

nginx安装升级及配置详解1.简介2.安装配置3.配置⽂件介绍4.启动、停⽌、平滑重启、升级⼀、Nginx简介Nginx(engine x)是俄罗斯⼈Igor Sysoev编写的⼀款⾼性能的http和反向代理服务器。
在连接⾼并发的情况下,nginx是apache服务器不错的替代品,它能够⽀持50000个并发连接数的响应,⽽内存、cpu等系统资源资源消耗却⾮常低,运⾏⾮常稳定。
性能优势:作为web服务器,处理静态⽂件、索引⽂件及⾃动索引效率⾼作为代理服务器,快速⾼效反向代理作为负载均衡服务器性能,⽀持多并发的连接,占⽤低内存稳定,采⽤分段资源分配技术⾼可⽤,⽀持热部署,启动迅速其它特点:成本低廉;配置⽂件⾮常简单;⽀持Rewrite重写规则,能够根据域名、URL的不同,将http请求分到不同的后端服务器群组;内置健康检查功能,如果nginx proxy后端的某台web服务器宕机了,不会影响到前端的访问;节省带宽,⽀持gzip压缩;⼆、Nginx安装与配置编译安装1.⾸先下载gcc编译器以及nginx⼀些模块的依赖库,通常有pcre库(⽀持rewrite模块),zlib(⽀持gzip模块)库,openssl(⽀持ssl模块)库等。
这些库可以编译安装,也可以yum安装,这⾥选择yum安装。
# yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel2.然后选择nginx版本下载源码并解压# tar –zxvf nginx-1.12.2.tar.gz –C /PATH3.使⽤configure脚本⾃动⽣成Makefile⽂件,nginx的configure脚本⽀持常⽤选项如下,但⾸先给出⼀个例⼦:./configure --prefix=/usr/local/nginx \--conf-path=/etc/nginx/nginx.conf \--error-log-path=/datadisk/data/log/nginx/error.log \--http-log-path=/datadisk/data/log/nginx/access.log \--pid-path=/var/run/nginx.pid \--lock-path=/var/run/nginx.lock \--http-client-body-temp-path=/var/cache/nginx/client_temp \--http-proxy-temp-path=/var/cache/nginx/proxy_temp \--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \--http-scgi-temp-path=/var/cache/nginx/scgi_temp \--user=nginx \--group=nginx \--with-http_ssl_module \--with-http_realip_module \--with-http_addition_module \--with-http_sub_module \--with-http_dav_module \--with-http_flv_module \--with-http_mp4_module \--with-http_gunzip_module \--with-http_gzip_static_module \--with-http_random_index_module \--with-http_secure_link_module \--with-http_stub_status_module \--with-http_auth_request_module \--with-threads --with-stream \--with-stream_ssl_module \--with-http_slice_module \--with-file-aio \--with-http_v2_module \--with-ipv6然后make && make install即可。
nginx错误处理方法
Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。
Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的站点开发的,它已经在该站点运行超过两年半了。
Igor 将源代码以类BSD许可证的形式发布。
Nginx 超越 Apache 的高性能和稳定性。
Nginx+Tomcat是目前主流的Java web架构,很多公司在使用,Nginx+Tomcat通过简单的配置,可以实现高性能的负载均衡,通过本文学习,可以实现Nginx+Tomcat 负载均衡。
工具资源1、Java运行环境,JDK2、压缩版下载3、稳定版下载本文基于win10进行配置配置步骤1、JDK环境配置略2、Tomcat安装配置请参考:一台服务器安装运行多个Tomcat及注册服务本测试安装两个Tomcat,端口分别是8801和8802安装配置完成后请确保每一个Tomcat可以正常访问为了区分两个Tomcat,本文将第二个Tomcat的页面名称改为:Apache Tomcat/、Nginx配置v1.0 可编辑可修改1.解压Nginx到D盘根目录2.修改Nginx配置#user nobody;worker_processes 1; #工作进程的个数#error_log logs/;#error_log logs/ notice;#error_log logs/ info;#pid logs/;events {worker_connections 1024; #单个进程最大连接数}http {include ; #文件扩展名与文件类型映射表default_type application/octet-stream; #默认文件类型#access_log logs/ main;sendfile on; #开启高效文件传输模式#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65; #长连接超时时间,单位是秒#gzip on; #启用Gizp压缩#服务器的集群upstream tomcatColony { #服务器集群名字server weight=0;server weight=1;}server {listen 8080; #监听端口,默认是80,可以修改 server_name localhost; #当前服务的域名location / {proxy_pass ; #指定使用集群proxy_redirect default;}error_page 500 502 503 504 /;location = / {root html;}}注意:nginx在配置upstream时,有两个参数:ip_hash(同一IP一直使用同一台server服务)weight(server的使用权重,数值越大,nginx分发的请求越多)1.启动NginxNginx目录下:D:\,运行,即可启动。
FORTICLIENT SSL VPN安装和配置手册说明书
INSTITUCIÓN PÚBLICA CERTIFICADA BAJO LA NORMA ISO 9001MANUAL PARA INSTALACION Y CONFIGURACION DE FORTICLIENTSSL VPNPara una excelente instalación y configuración del FortiClient SSL VPN siga los siguientes pasos:1.Ingrese a la siguiente dirección: http://190.5.141.79/VPN y deberá ingresar el “Usuario” y“Password” con el que se conecta normalmente con el cliente VPN.SitioWeb:www.aduana.gob.svcorreoelectrónico:******************.svINSTITUCIÓN PÚBLICA CERTIFICADA BAJO LA NORMA ISO 90012.Ingrese su usuario y password asignado, el cual utilizaba en el VPN y da click en la tecla:NOTA:El Username vpn3000-all solo aplica para los Agentes Aduanales, Apoderados Especiales Aduaneros y Despachantes de Aduanas.Los usuarios que poseen un Username especial asignado por la DGA, (Navieras, LíneasAéreas, Empresas Desconsolidadoras de carga, que transmiten el manifiesto electrónico decarga), deberán ingresar con dicho username.3.Aparecerá una ventana donde posee dos archivos, escoja el llamado: SslvpnClient.exevpn3000-all**********SitioWeb:www.aduana.gob.svcorreoelectrónico:******************.svINSTITUCIÓN PÚBLICA CERTIFICADA BAJO LA NORMA ISO 9001 4.Le indicara que opción desea optar:-De click en la opción Guardar5.Al finalizar la descarga Cierre la ventana.SitioWeb:www.aduana.gob.svcorreoelectrónico:******************.svINSTITUCIÓN PÚBLICA CERTIFICADA BAJO LA NORMA ISO 90016.Por favor vaya al lugar donde guardo el archivo y de doble click sobre él.7.Le aparecerá una ventana-De click enAl finalizar el proceso de click enSitioWeb:www.aduana.gob.svcorreoelectrónico:******************.svINSTITUCIÓN PÚBLICA CERTIFICADA BAJO LA NORMA ISO 90018.Ingrese al programa FortiClient SSL VPN9.Cuando se desplegué la ventanilla del FortiClient SSL VPN ingresaremos los siguientesdatos:SitioWeb:www.aduana.gob.svcorreoelectrónico:******************.svINSTITUCIÓN PÚBLICA CERTIFICADA BAJO LA NORMA ISO 900110.Una vez configurado de click en la primera vez que ud accese al sistemaaparecerá una ventanita, de un click en11.Cuando su FortiClient SSL VPN ya esté conectado satisfactoriamente, podrá efectuar losmismos procesos con su sistema de SIDUNEA.NOTA IMPORTANTE:Al finalizar los procesos con su FortiClient SSL VPN y desea terminar la conexión, por favor de un click enPorque si ud solamente presiona EXITSitioWeb:www.aduana.gob.svcorreoelectrónico:******************.svINSTITUCIÓN PÚBLICA CERTIFICADA BAJO LA NORMA ISO 9001Cualquier consulta puede contactarnos a los departamentos detallados a continuación. -Asistencia Tecnológica a los teléfonos 2244 – 5006 y 2244 – 5080.-Atención al Usuario a los teléfonos 2244 – 5044, 2244 – 5045, 2244 – 5182.。
java+tomcat+openssl,https单向认证、双向认证(亲测)
java+tomcat+openssl,https单向认证、双向认证(亲测)展开全文1.生成根证书、服务端证书、客户端证书1.1 生成CA根证书1.生成跟证书私钥root_private.key2.openssl genrsa -out root_private.key 10243.(私钥中包含附加信息,可推到出公钥。
使用私钥生成的证书包含对应公钥)4.生成根证书签发请求文件root.csr5.openssl req -new -key root_private.key -out root.csr -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=Testcompany/OU=Test company/CN=Test company"6.生成X.509格式的CA根证书root.crt7.openssl x509 -req -days 365 -in root.csr -out root.crt -signkey root_private.key8.根据root.crt证书生成truststore JKS文件root.truststore,输入秘钥库密码123456。
9.这一步只针对双向认证,单向不需要。
10.keytool -keystore root.truststore -import -trustcacerts -file root.crt11.输入yes,信任此证书。
1.2 使用根证书签发服务端证书(正常是先签发二级证书,由二级证书对服务端签发)1.生成服务端私钥文件server_private.key2.openssl genrsa -out server_private.key 10243.签名请求文件server.csr4.openssl req -new -key server_private.key -out server.csr -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=test-server/OU=test-server/CN=test-server"5.使用根证书签发服务端证书server.crt6.openssl x509 -req -days 365 -sha1 -CA root.crt -CAkey root_private.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.crt7.查看证书信息8.openssl x509 -in server.crt -text -noout9.将服务端证书转换为pkcs12格式,密码12345610.openssl pkcs12 -export -in server.crt -inkey server_private.key -out server.p1211.生成服务端秘钥库server.keystore,秘钥库密码也为12345612.keytool -importkeystore -srckeystore server.p12 -destkeystore server.keystore -srcstoretype pkcs1213.查看keystore14.keytool -list -v -keystore server.keystore1.3 使用根证书签发客户端证书•生成客户端私钥文件client_private.key•openssl genrsa -out client_private.key 1024•签名请求文件client.csr•openssl req -new -key client_private.key -out client.csr -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=test-client/OU=test-client/CN=test-client"•使用根证书签发客户端证书client.crt•openssl x509 -req -days 365 -sha1 -CA root.crt -CAkey root_private.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.crt•证书转换为pkcs12格式,密码123456•以上生成的公私钥和证书都是PEM格式的,服务端、浏览器一般使用PKCS12格式。
Nginx 安装nginx_upstream_jvm_route模块之 tomcat安装及配置
Nginx 安装nginx_upstream_jvm_route模块之tomcat安装及配置2013/08/29 by: shao原创文章,转载请指明出处并保留原文url地址本文主要搭建若干台虚拟机来, 安装nginx及tomcat,然后测试相关服务器的会话粘连特性.1. 安装javayum install java-1.6.0-openjdk2. 安装 tomcat下载 tomcatwget/apache/tomcat/tomcat-6/v6.0.37/bin/apache-tom cat-6.0.37.tar.gz解压缩tar xzvf apache-tomcat-6.0.37.tar.gz -C /usr/local/cd /usr/local/mv apache-tomcat-6.0.37 tomcat启动 tomcat[root@n1 bin]# pwd/usr/local/tomcat/bin[root@n1 bin]# ./startup.shUsing CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usrUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar检验是否启动如下蓝色区域3. 配置tomcat修改tomcat的 server.xml文件, 在文件中将如下行 <Engine name="Catalina" defaultHost="localhost">修改为 <Engine name="Catalina" defaultHost="localhost" jvmRoute="t1">4. 创建测试页面进入如下目录:[root@n1 tomcat]#[root@n1 tomcat]# pwd/usr/local/tomcat[root@n1 tomcat]# cd webapps/[root@n1 webapps]# lsdocs examples host-manager manager ROOT[root@n1 webapps]# cd ROOT/输入如下内容:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html><head></head><body>$your_jvm_name<br /><% out.print(request.getSession()) ;System.out.println(request.getSession());%> <br /><% out.println(request.getHeader("Cookie"));System.out.println(request.getHeader("Cookie"));%></body></html>5. Nginx安装见前面文章Nginx 下安装nginx_upstream_jvm_route模块/nginx-xia-an-zhuang-nginx-upstream-jvm-route-mo-kuai.html6. 配置hosts文件vi /etc/hosts在文件最后添加如下:192.168.199.108 n1192.168.199.107 n27. 测试tomcat页面编辑windows下hosts文件最后添加,如下:192.168.199.108 192.168.199.107 192.168.199.102 打开浏览器,输入:/a.jsp类似输入如下地址:/a.jsp8. 配置n1服务器的 nginx配置文件[root@n1 conf]# cd /usr/local/nginx/conf/[root@n1 conf]# lsfastcgi.conf mime.types scgi_params.default fastcgi.conf.default mime.types.default uwsgi_paramsfastcgi_params nginx.conf uwsgi_params.default fastcgi_params.default nginx.conf.2 win-utfkoi-utf nginx.conf.defaultkoi-win scgi_params[root@n1 conf]# vi nginx.conf输入下面内容:worker_processes 5;events {use epoll;worker_connections 2048;}http {log_format access ‘$remote_addr – $remote_user [$time_local] "$request" ‘‘$status $body_bytes_sent "$http_referer" ‘‘"$http_user_agent" $http_x_forwarded_for’;upstream backend {server n1:8080 srun_id=t1; #负载均衡服务器server n2:8080 srun_id=t2; #负载均衡服务器jvm_route $cookie_JSESSIONID|sessionid reverse;}include mime.types;default_type application/octet-stream;charset UTF-8;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 20m;limit_rate 1024k;sendfile on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;server {listen 80;server_name localhost;index index.jsp index.htm index.html;root html;access_log logs/host.access.log access;location / {proxy_pass http://backend; #设为反向代理proxy_redirect off;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded _for;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $http_host;}location ~ .*\.(htm|html|ico|gif|jpg|jpeg|png|bmp|swf)$ {expires 30d;}location ~ .*\.(js|css)?${expires 1h;}}}如上图:,做相关的配置9. 测试n1服务器的浏览结果10. 配置服务器n2, 配置过程同上面11. 创建服务器n3,并且配置相关nginx,如下:worker_processes 5;events {use epoll;worker_connections 2048;}http {log_format access ‘$remote_addr – $remote_user [$time_local] "$request" ‘‘$status $body_bytes_sent "$http_referer" ‘‘"$http_user_agent" $http_x_forwarded_for’;upstream backend {server n1:80 ; #负载均衡服务器server n2:80 ; #负载均衡服务器}include mime.types;default_type application/octet-stream; charset UTF-8;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 20m;limit_rate 1024k;sendfile on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;server {listen 80;server_name localhost;index index.jsp index.htm index.html; root html;access_log logs/host.access.log access;location / {proxy_pass http://backend; #设为反向代理proxy_redirect off;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded _for;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $http_host;}location ~ .*\.(htm|html|ico|gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 1h;}}}12. 启动n3的nginx服务器, 测试环境准备1). 启动连接控制台窗口连接到n1服务器A. 监控nginx服务器的日志输出tail -f /usr/local/nginx/logs/host.access.logB. 监控tomcat的日志输出tail -f /usr/local/tomcat/logs/catalina.out2). 连接n2服务器,分别参照上面方法, 分别监控 tomcat及nginx的访问日志.3). 针对控制台多连续按下回车, 保证监视控制台是空的, 没有任何数据, 这样方便一会数据的查看13. 连续发起请求, 测试相关功能1).打开浏览器,输入如下地址/a.jsp显示结果如下:路上图:位置1:(黄色区域),输入相关测试域名, 测试域名相当重要, session是基于cookie的,cookie同域名是紧密联系的,因此域名及其重要.位置2:(绿色区域), 域名中不包括端口(8080),说明是先访问nginx服务器位置3:(红色区域), 这次访问中,由于没有登录, 因此可以设置服务器设置了cookie位置4:(蓝色区域), 是本次sessionid的 cookie名称.位置5:(紫色区域), “.t2”是tomcat的session会话保持的一个相关方法, nginx通过这个标志来进行会话保持工作.2).检查n1服务器 tomcat的输出,如下图3).检查n2服务器的tomcat日志输出检查发现, n2服务器tomcat 有输出,说明有相关访问4) 检查n1服务器 nginx相关输出如下:说明n1服务器的 nginx没有被访问5)检查n2服务器的nginx相关访问14. 连续访问测试1). 在地址栏中输入/a.jsp?a=1 /a.jsp?a=2 /a.jsp?a=3 /a.jsp?a=4 /a.jsp?a=5 /a.jsp?a=6 /a.jsp?a=7 /a.jsp?a=8 /a.jsp?a=9 /a.jsp?a=10 /a.jsp?a=11 2)检查n1服务器的tomcat输出,如下3)检查n2服务器的tomcat输出,如下4)检查n1服务器nginx输出日志5)检查n2服务器的nginx日志输出15. 数据分析上面我们连续进行了10次以上相关jsp文件的访问.10次访问后, 在n1服务器上没有任何访问,10次访问中, 全部发送给 n2服务器的tomcat了10次访问, 有大约5次发送给 n1 服务器的nginx服务器10次访问, 有大约5次发送给 n2服务器的nginx服务器. 说明目前 session会话保持是生效了.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Nginx + tomcat + SSL 安装配置手册1.介绍Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。
nginx有以下几项基本特性:模块化结构过滤器包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。
高性能支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。
高稳定性Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。
官方表示保持10,000个没有活动的连接,它只占2.5M内存。
多负载策略多种分配策略,并且分配均匀。
自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。
2.准备2.1 资源Nginx中文网站:/Nginx英文网站:/PCRE网站:/2.2 相关软件1)PCREPCRE(Perl Compatible Regular Expressions)中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库。
neginx中使用正则表达式进行灵活配置,安装之前需要确认PCRE已安装。
下载地址:/,使用版本pcre-8.12.tar.gz2)nginx-upstream-jvm-routenginx_upstream_jvm_route 是一个 Nginx 的扩展模块,用来实现基于Cookie 的Session Sticky 的功能。
下载地址(svn):/svn/trunk/3.4.4.1 Windows版安装安装文件为.zip文件,解压缩后,运行目录中的nginx.exe(或使用命令),服务启动。
浏览器中输入:http://192.168.15.30,出现“Welcome to nginx!”页面,安装成功。
4.2 Linux版安装安装说明本例将nginx安装在/home/apps目录下。
将pcre-8.12.tar.gz、nginx-0.8.54.tar.gz文件ftp到/home/apps目录下。
将nginx-upstream-jvm-route文件夹ftp到/home/apps目录下。
●安装步骤1)PCRE安装#cd /home/apps#tar –zxf pcre-8.12.tar.gz#cd pcre-8.12#./config#make#make install默认安装路径为:/usr/local/lib2)nginx-upstream-jvm-route安装#cd /home/apps#tar –zxf nginx-0.8.54.tar.gz#mv nginx-0.8.54 nginx-0.8.54-src#cd nginx-0.8.54-src# patch -p0 < ../nginx-upstream-jvm-route/jvm_route.patch3)nginx安装#cd /home/apps/nginx-0.8.54#./configure --prefix=/home/apps/nginx-0.8.54 --with-http_ssl_module --with-http_gz ip_static_module --with-http_stub_status_module--add-module=/home/apps/nginx-upstrea m-jvm-route#make#make install●启动、验证#cd /home/apps/nginx-0.8.54/sbin#./nginx浏览器中输入:http://192.168.15.30,出现“Welcome to nginx!”页面,安装成功。
5.Nginx配置5.1 通用参数配置1) wor ker_processes:指明了nginx要开启的进程数,据官方说法,一般开一个就够了,多开几个,可以减少机器io带来的影响。
(网上经验,设置为cpu数的两倍)。
2) worker_connections:每个工作进程允许最大的同时连接数。
5.2 负载均衡配置说明Nginx使用upstream模块配置负载均衡,upstream目前支持5钟配置方式,每种方式是不同的负载策略,除了这五种外可以使用nginx-upstream-jvm-route扩展模块,在配置部分会针对6中进行示例。
准备工作安装nginx-upstream-jvm-route扩展模块。
修改tomcat的server.xml文件,在“<Engine”节点增加“jvmRoute="tomcat1"”和“jvmRoute="tomcat2"”。
配置1)轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream {server 192.168.15.40:8080;server 192.168.15.41:8081;}2)weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
weight 默认为1.weight越大,负载的权重就越大。
upstream {server 192.168.15.40:8080 weight=1;server 192.168.15.41:8081 weight=2;}3)ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream {ip_hash;server 192.168.15.40:8080;server 192.168.15.41:8081;}4)fair按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream {server 192.168.15.40:8080;server 192.168.15.41:8081;fair;}5)url按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream {server 192.168.15.40:8080;server 192.168.15.41:8081;hash $request_uri;hash_method crc32;}6)nginx-upstream-jvm-routeNginx 的扩展模块,用来实现基于Cookie 的Session Sticky 的功能。
upstream {server 192.168.15.40:8080 srun_id=tomcat1;server 192.168.15.41:8081 srun_id=tomcat2;jvm_route $cookie_JSESSIONID|sessionid reverse;}5.3 SSL模块配置准备证书,使用openssl将p12文件导出服务器证书文件、服务器私钥文件、客户证书的签发证书(CA证书)。
见openssl命令。
说明Nginx可是实现SSL的配置,实现单向和双向认证,并能够验证证书的状态。
准工作配置单项SSL需要准备服务器证书文件和私钥文件,配置双向SSL还需要准备用户证书的签发证书。
CA服务器证书文件为p12格式(nginx不能配置p12格式?),需将p12格式转化为crt/cer、key文件格式。
使用openssl做转换,命令如下:openssl pkcs12 -in .pfx -nodes -nocerts -out server.keyopenssl pkcs12 -in .pfx -nodes -nokeys -clcerts -out server.crtopenssl pkcs12 -in rootca.pfx -nodes -nokeys -clcerts -out ca.crt配置HTTPS修改nginx.conf文件,配置HTTPS模块,配置如下:server {listen 443;server_name localhost;ssl on;ssl_certificate server.crt;ssl_certificate_key server.key;ssl_client_certificate ca.crt;#双向认证ssl_verify_client on; #双向认证ssl_session_timeout 5m;ssl_protocols SSLv2 SSLv3 TLSv1;ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;ssl_prefer_server_ciphers on;location /XXXX_center/ {proxy_pass http://192.168.15.40/XXXX_center/;proxy_set_header X-Real-IP $remote_addr;proxy_set_header SSL_CERT $ssl_client_cert;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location / {root html;index index.html index.htm;}}注意1、Nginx配置了SSL后,tomcat不需要再配置SSL,因为代理转向地址为http而非https2、Nginx配置SSL后,web服务器部署的应用不能再获取到用户证书,而服务器平台必须要拿到用户证书进行业务验证。
这就需要nginx将用户证书透传到web服务器,在这里将用户证书添加到http头中,应用从http头获取用户证书,达到透传的目的,如:proxy_set_header SSL_CERT$ssl_client_cert;5.4 静态文件配置说明Nginx可处置静态文件,应用服务器只处理动态文件,提高访问和处理能力。
准备工作将静态文件放入nginx服务器:在nginx目录下创建web目录,将XXXX_center 下的XXXX_center/static/sj和XXXX_center/static/smpush文件放入web目录,目录结构为:XXXX_center/static/sj、/nginx-0.8.54/web/XXXX_center/static/smpush。