nginx https反向代理tomcat

时间:2021-07-19 16:42:16

Context体现在server.xml中的Host里的<Context>元素,它由Context接口定义。每个<Context>元素代表了运行在虚拟主机上的单个Web应用。

<Context>元素:

      <Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
--> <!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="/var/www/java/pen/pen.war" path="/pen" debug="0" reloadable="true"/>
</Host>

 

1>path:即要建立的虚拟目录,,注意是/pen,它指定访问Web应用的URL入口,如http://localhost:8080/pen/****。

2>docBase:为实际目录在硬盘上的位置(应用程序的路径或者是WAR文件存放的路径)。
3>reloadable:如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改变,如果监视到有class文件被更新,服务器自动重新加载Web应用,这样我们可以在不重起tomcat的情况下改变应用程序。

一个Host元素中嵌套任意多的Context元素。每个Context的路径必须是惟一的,由path属性定义。另外,你必须定义一个path=“”的context,这个Context称为该虚拟主机的缺省web应用,用来处理那些不能匹配任何Context的Context路径的请求

二、修改好sever.xml后更改nginx

    upstream https_tomcat_web{
server 127.0.0.1:8080 ;
}
server {
listen 443 ssl;
server_name iot.iot.com;
location /{
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
ssl_certificate /usr/local/cert/1732985_iot.iot.com.pem;
ssl_certificate_key /usr/local/cert/1732985_iot.iot.com.key; # ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on; root /var/www/java/pen; # passenger_enabled on;
#rails_env production;
} 修改后重启nginx 在浏览器https://iot.iot.com/pen/** 可以正常的请求