nginx多站点+tomcat多项目部署

来源:互联网 发布:光束灯编程 512 编辑:程序博客网 时间:2024/06/07 10:29

Tomcat多项目部署

1.最简单的就是直接丢到webapps里,通过不同的路径相同端口访问不同项目。

2.修改主配置文件,不同项目监听不同端口(添加一个service)

<Service name="Catalina">    <Connector port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" />    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />    <Engine name="Catalina" defaultHost="localhost">      <Realm className="org.apache.catalina.realm.LockOutRealm">        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"               resourceName="UserDatabase"/>      </Realm>      <Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true">        <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" />    <Context path="/test1" reloadable="true" docBase="/home/pic/apache-tomcat-7.0.64/webapps/test1/" />      </Host>    </Engine>  </Service>  <Service name="Catalina">    <Connector port="8081" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" />    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />    <Engine name="Catalina" defaultHost="localhost">      <Realm className="org.apache.catalina.realm.LockOutRealm">        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"               resourceName="UserDatabase"/>      </Realm>      <Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true">        <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" />    <Context path="/test2" reloadable="true" docBase="/home/pic/apache-tomcat-7.0.64/webapps/test2/" />      </Host>    </Engine>  </Service>

访问通过url:
127.0.0.1:8080/test1
127.0.0.1:8081/test2

<\Context>元素的属性:
path:指定访问该Web应用的URL入口。
docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。
在开发阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web应用的发布阶段将reloadable设为false。

tips:一个项目可以与多个<Context>元素(如图片和项目的其他内容分开放置),但是要注意路径问题

Nginx多站点配置

1.增加多个域名

#vim /etc/hosts

192.168.44.129  www.test1.com www.test2.com

2.修改主配置文件:/etc/nginx/nginx.conf

#vim /etc/nginx/nginx.conf

server{        listen 80;        server_name _;        #server_name_in_redirect off;        location /{            index index.html;        }    }    # The default server is in conf.d/default.confinclude /etc/nginx/vhosts/*.conf;

3.虚拟主机配置

#mkdir /etc/nginx/vhosts
#vim /etc/nginx/vhosts/www.test1.com.conf

server{                listen  80;                server_name www.test1.com;                index index.html;                root /opt/webapps;                location /{                        proxy_pass http://www.test1.com:8080/test1/;                        proxy_cookie_path /test1/ /;                        proxy_set_header X-Real-IP $remote_addr;                        client_max_body_size 20m;                        client_body_buffer_size 128k;                        proxy_ignore_client_abort on;                        proxy_connect_timeout 60s;                        proxy_send_timeout 60s;                        proxy_read_timeout 60s;                        proxy_buffer_size 64k;                        proxy_buffers 4 32k;                        proxy_busy_buffers_size 64k;                        proxy_temp_file_write_size 64k;                        proxy_intercept_errors on;                        proxy_set_header Host  $host;                        proxy_set_header X-Forwarded-For  $remote_addr;                }        }

vim /etc/nginx/vhosts/www.test1.com.conf

server{                listen  80;                server_name www.test2.com;                index index.html;                root /opt/webapps;                location /{                        proxy_pass http://www.test2.com:8081/test2/;                        proxy_cookie_path /test2/ /;                        proxy_set_header X-Real-IP $remote_addr;                        client_max_body_size 20m;                        client_body_buffer_size 128k;                        proxy_ignore_client_abort on;                        proxy_connect_timeout 60s;                        proxy_send_timeout 60s;                        proxy_read_timeout 60s;                        proxy_buffer_size 64k;                        proxy_buffers 4 32k;                        proxy_busy_buffers_size 64k;                        proxy_temp_file_write_size 64k;                        proxy_intercept_errors on;                        proxy_set_header Host  $host;                        proxy_set_header X-Forwarded-For  $remote_addr;                }        }

通过www.test1.com和www.test2.com直接访问

关于Session重建问题

1.域名(www.test1.com/test1)反向代理(www.test1.com:8080/test1/)但是访问需要输入 www.test1.com/test1 ,不太现实

server{                listen  80;                server_name www.test1.com;                index index.html;                root /opt/webapps;                location /test1/ {                        proxy_pass http://www.test1.com:8080/test1/                        proxy_redirect off;                        proxy_set_header X-Real-IP $remote_addr;                        client_max_body_size 20m;                        client_body_buffer_size 128k;                        proxy_ignore_client_abort on;                        proxy_connect_timeout 60s;                        proxy_send_timeout 60s;                        proxy_read_timeout 60s;                        proxy_buffer_size 64k;                        proxy_buffers 4 32k;                        proxy_busy_buffers_size 64k;                        proxy_temp_file_write_size 64k;                        proxy_intercept_errors on;                        proxy_set_header Host  $host;                        proxy_set_header X-Forwarded-For  $remote_addr;                }                location / {                    proxy_pass http://www.test1.com:8080/test1/;                    proxy_redirect http://www.test1:8080/ http://www.test1.com/;                }        }

2.直接修改tomcat的JSESSIONID的path路径

(1)可在tomcat用来配置数据源的配置文件(context.xml)修改

#vim /home/pic/apache-tomcat-7.0.64/conf/context.xml

<Context sessionCookiePath="/"></Context>

添加sessionCookiePath=”/”,指定cookie存放路径

(2)可在tomcat的主配置文件(server.xml)修改

 <Context path="/test1" reloadable="true"  sessionCookieName="Mysession" sessionCookiePath="/" docBase="/home/pic/apache-tomcat-7.0.64/webapps/test1/" />

(3)在nginx配置中指定路径(nginx的老版本不含这个参数,需要ngnix1.6之后版本)

location / {                proxy_pass http://www.test1.com:8080/test1/;        proxy_cookie_path /test1/ /;}  
0 0
原创粉丝点击