nginx多站点+tomcat多项目部署

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.conf
include /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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值