Jboss迁移到Tomcat之手记(一)- Server.xml

首先是SSL配置问题,Tomcat默认是用APR的东东来作SSL,结果网络上找了openssl等组件来生成keystore文件也没完成APR SSL的配置,好像用了不一样的算法来生成证书文件,配置参数也有不一样。折腾了老久,最后只好弃之不用。
<!--APR library loader. Documentation at /docs/apr.html
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
-->
还好原来的SSL方式还支持:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
                               keystoreFile="${catalina.home}/conf/aaa.keystore" keystorePass="changeit"
                               clientAuth="false" sslProtocol="TLS"
         />
 
jdk生成证书库文件便可:
$JAVA_HOME/bin/keytool -genkeypair -alias proja -keyalg RSA -keystore /tmp/aaa.keystore
记住证书密码和库密码设成一致方便使用。
 
Tomcat默认8443做为SSL端口,若是要改成SSL默认端口443,须要tomcatroot身份启动,或者修改Tomcat启动方式(Under UNIX all ports <1024 are "privileged" ports. Only root may open a priviledged port.)。由于1024如下的端口为了安全缘由默认只能为root打开。
而全部的非SSLconnectorredirectport记住要改为你的真实ssl端口号。
Tomcatnobody或其余非root用户启动,想用80/443端口的话,tomcat官网说能够用jsvc命令而不是catalina.sh来启动:
$TOMCAT_HOME/bin/jsvc \
      -user $TOMCAT_USER \
      -cp ./bin/bootstrap.jar \
      -outfile ./logs/catalina.out \
      -errfile ./logs/catalina.err \
      -pidfile "$CATALINA_PID" \
      \
      -Djava.endorsed.dirs=./common/endorsed \
      -Dcatalina.home="$CATALINA_HOME" \
      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
      org.apache.catalina.startup.Bootstrap start
 
还有就是用iptables/ipchains网关/代理软件来实现端口重定向来把外部标准端口请求转到server8080/8443或其余非标准端口,如iptables能够以下配置:
iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -d your hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -d your hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080
 
或者用第三方链接器如CoyoteConenctor,听说也能够配置代理端口在链接器配置项里(未验证):
<Connector
  className="org.apache.catalina.connector.http.HttpConnector"
  port="8080"
  proxyPort="80"
>  
 
Tomcat虚拟主机配置能够在<server><service><Engine>标签下配置:
Enginedefaulthost属性能够配置默认主机名,基本都localhost
其中的子元素<Host>为配置虚拟主机项,有name, appBase, unpackWARs, autoDeploy属性能够配置,如<host name=”localhost” appBase=”webapps” unpackWARS=”true” autoDeploy=”true”>,Host有子元素Valve能够配置各类特性,比较经常使用的access log配置:<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/>
Host还能够用Context子元素配置虚拟目录别名:
<Context path="/" docBase="projb.war" debug="0"/>
EngineValve子元素能够配置各类特性,比较有用的指定客户ip范围:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1|171.69.11[2-9].*|171.69.12[0-2].*| 1.*.*.*" deny="" />, allow/deny是一种wildcard模式定义。
 
另外,ServerGlobalNamingResources子元素,其中能够配置Resource来实现全局JNDI配置,如data source, JMS, LDAP等。Tomcat的全局JNDI配置也能够在$TOMCAT_HOME/conf/context.xml里配置。而app级的JNDI配置应该在$doc_base/project.war/META-INF/context.xml里配置,指定客户ip范围的Valve元素org.apache.catalina.valves.RemoteAddrValve也配置于此代表做用域为某个应用而不是全部tomcat应用。
相关文章
相关标签/搜索