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應用。
相關文章
相關標籤/搜索