remoteIpHeader="X-Forwarded-For"remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"/>
……(此处为省略的其他配置)
二)Nginx安装与配置
为了优化性能,安装‘阿里’公司基于nginx二次开发的tengine。
(Nginx的配置可应用在Tengine中)
1、安装nginx(Tengine)
在http:
//tengine.taobao.org/download_cn.html下载合适版本Tenginx(银税通使用2.1.1版本)
tar-zxftengine-2.1.0.tar.gz
cdtengine-2.1.0
编译安装tenginx,需要gcc-c++等工具的支持:
yuminstallgcc-c++openssl-develpcre-devel
①进行编译配置,合理选择所支持功能模块,以银税通为例:
./configure--prefix=/home/bwjr/prog/tenginx--user=zw--group=zw--with-http_stub_status_module--with-http_ssl_module--with-http_gzip_static_module--with-http_concat_module--without-http_fastcgi_module--without-http_scgi_module
注:
由于该系统有部分业务支持用户上传非图片文件,请不要安装多余模块,以免产生漏洞。
②查看CPU核心数(注:
下面命令查询的是逻辑核心数)
cat/proc/cpuinfo|grepprocessor|wc–l
③按照核心数进行编译安装(以6核支持超线程的CPU为例,即12个逻辑核)
make-j12;makeinstall;makeclean
注:
若是CPU核数经常变动(比如虚机的情况),可以不按照CPU核数安装,默认安装即可。
2、配置nginx自启动(使用一下脚本,适当调整里面的路径)
#!
/bin/sh
#
#nginx-thisscriptstartsandstopsthenginxdaemin
#
#chkconfig:
-8515
#description:
NginxisanHTTP(S)server,HTTP(S)reverse\
#proxyandIMAP/POP3proxyserver
#processname:
nginx
#config:
/usr/local/nginx/conf/nginx.conf
#pidfile:
/usr/local/nginx/logs/nginx.pid
#Sourcefunctionlibrary.
./etc/rc.d/init.d/functions
#Sourcenetworkingconfiguration.
./etc/sysconfig/network
#Checkthatnetworkingisup.
["$NETWORKING"="no"]&&exit0
#请适当调整下面的路径
nginx="/home/bwjr/prog/tenginx/sbin/nginx"
NGINX_CONF_FILE="/home/bwjr/prog/tenginx/conf/nginx.conf"
prog=$(basename$nginx)
lockfile=/var/lock/subsys/nginx
start(){
[-x$nginx]||exit5
[-f$NGINX_CONF_FILE]||exit6
echo-n$"Starting$prog:
"
daemon$nginx-c$NGINX_CONF_FILE
retval=$?
echo
[$retval-eq0]&&touch$lockfile
return$retval
}
stop(){
echo-n$"Stopping$prog:
"
killproc$prog-QUIT
retval=$?
echo
[$retval-eq0]&&rm-f$lockfile
return$retval
}
restart(){
configtest||return$?
stop
start
}
reload(){
configtest||return$?
echo-n$"Reloading$prog:
"
killproc$nginx-HUP
RETVAL=$?
echo
}
force_reload(){restart}
configtest(){$nginx-t-c$NGINX_CONF_FILE}
rh_status(){status$prog}
rh_status_q(){rh_status>/dev/null2>&1}
case"$1"in
start)
rh_status_q&&exit0
$1
;;
stop)
rh_status_q||exit0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q||exit7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q||exit0
;;
*)
echo$"Usage:
$0{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit2
esac
#将以上保存为文件,置于/etc/rc.d/init.d/目录下,执行chkconfignginxon;
注:
该服务脚本配置了reload方法,即修改配置后,可以不通过重启,而是通过reload加载新的配置。
3、配置nginx
基于经验与实验,以银税通为例,配置如下:
#usernobody;
worker_processesauto;
#进程对CPU核的绑定
#worker_cpu_affinityauto;
worker_rlimit_nofile655350;
error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
pid./nginx.pid;
events{worker_connections5120;}
http{
includemime.types;
default_typeapplication/octet-stream;
log_formatmain'$remote_addr$http_host-$remote_user[$time_local]"$request"''"$status"$body_bytes_sent"$http_referer"''"$http_user_agent""$http_Accept"';
#access_loglogs/access.logmain;error.log
#autoindexoff;#禁止列目录(默认即是关闭,可以没有这一行)
sendfileon;
#tcp_nopushon;
keepalive_timeout65;
#定制(伪装)所显示的服务器类型与版本
server_tagIIS/11.1;
gzipon;
gzip_disable"msie6";
#压缩等级1-9,9最慢压缩比最大。
gzip_comp_level3;
gzip_buffers416k;
gzip_proxiedexpiredno-cacheno-storeprivateauth;
#需要压缩的数据格式
gzip_typestext/plainapplication/x-javascripttext/cssapplication/xmltext/xmlapplication/x-www-form-urlencoded;
output_buffers132k;
postpone_output1460;
client_max_body_size300m;
#限速(前1M下载时不限速)
limit_rate_after1m;
limit_rate512k;
#Sever的配置(为了易读易配,将server部分以include方式配置)
includevhosts/banktax.conf;
}
#文件banktax.conf内容
upstreamblworker{
#tengine支持使用额外增加的cookie实现会话保持
session_stickycookie=DistrIDmode=insertfallback=on;
server10.0.0.11:
8080weight=1max_fails=2fail_timeout=30s;
server10.0.0.12:
8080weight=1max_fails=2fail_timeout=30s;
server10.0.0.13:
8080weight=1max_fails=2fail_timeout=30s;
}
server{
listenlocalhost:
80;
server_namelocalhost;
#charsetkoi8-r;
access_loglogs/bt.access.logmain;
######统一所访问的域名"/"######
if($host=''){
rewrite^/(.*)$permanent;}
if($host=''){
rewrite^/(.*)$permanent;}
if($host='www.yinshuitong.org'){
rewrite^/(.*)$permanent;}
######自动补全"/"######
if(-d$request_filename){
rewrite^/(.*)([^/])$http:
//$host/$1$2/last;}
########设定一些特殊WEB应用经过tomcat或者指向空#########
location^~/cms/{
proxy_set_headerHost$host:
$server_port;
proxy_set_headerX-Forwarded-For$remote_addr;
proxy_passhttp:
//blworker;}
location^~/manager/{
alias/主目录/webs/}
location^~/files/{
#indexindex.htmlindex.htm;
alias/主目录/webs/}
########设定访问静态文件直接读取不经过tomcat#########
location~.*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${
root/主目录/webs/
expires15d;}
location~.*\.(js|css)?
${
root/主目录/webs/
expires1h;}
########动态访问转向tomcat处理#######################
location/{
proxy_set_headerHost$host:
$server_port;
proxy_set_headerX-Forwarded-For$remote_addr;
proxy_passhttp:
//blworker;}
#error_page404/files/404.html;
#拒绝访问.htaccess文件
#location~/\.ht{denyall;}
}
Nginx若是使用https,且由nginx全部完成SSL部分的加解密,配置如下:
#HTTPSserver
server{
listen443ssl;
server_namelocalhost;
ssl_certificate/主目录/webs/yinshuitong.crt;
ssl_certificate_key/baiwang/webs/yinshuitong.key;
ssl_session_cacheshared:
SSL:
1m;
ssl_session_timeout5m;
ssl_ciphersHIGH:
!
aNULL:
!
MD5;
ssl_prefer_server_cipherson;
#一些优化的配置同上(略)
location/{
proxy_set_headerHost$http_host;
#proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerX-Forwarded-For$remote_addr;
proxy_set_headerX-Forwarded-Protohttps;
proxy_redirectoff;
proxy_connect_timeout240;
proxy_send_timeout240;
proxy_read_timeout240;
###
proxy_passhttp:
//blworker;
}
}
测试时,使用如下命令,生成crt与key文件(按照命令执行情况提示填写)
opensslgenrsa-des3-outserver.key1024
opensslreq-new-keyserver.key-outserver.csr
opensslrsa-inserver.key-outbanktax.key
opensslx509-req-days365-inserver.csr-signkeybanktax.key-outbanktax.crt
注:
因为这是自己生成并签名的证书,所以使用浏览器访问时会提示证书有问题。
三)MySQL的安装与配置
1、安装
本系统采用版本为5.6.25(注:
5.6.x以上版本对子查询进行了优化,但无法与5.5.x以下的版本,直接通过目录拷贝进行数据迁移,其存储的数据格式有显著不同),采用编译安装方式。
(编译安装依赖cmake、ncurses-devel等,其他依赖请在cmake时,按提示安装)
yuminstallncurses-devel
cmake-DCMAKE_INSTALL_PREFIX=/主目录/prog/mysql5.6.25-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock-DWITH_MYISAM_STORAGE_ENGINE=1-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_MEMORY_STORAGE_ENGINE=1-DWITH_READLINE=1-DENABLED_LOCAL_INFILE=1-DMYSQL_DATADIR=/主目录/data/mysqldb-DMYSQL_USER=mysql-DMYSQL_TCP_PORT=3306
make;makeinstall;makeclean
安装后对DB目录进行初始化:
cd/主目录/prog/mysql5.6.25/
./scripts/mysql_install_db--datadir=/主目录/data/mysqldb--user=mysql--basedir=/主目录/prog/mysql5.6.25
2、使用脚本设置为服务
c