公司现阶段部署环境,一台Linux服务器,部署了4个项目,一个项目A 单独使用一个tomcatA ,项目B,C,D 使用同一个tomcat B。
一开始BCD项目通过配置tomcat 配置文件中Server.xml 中的HOST 节点来达到同一个tomcat使用不同二级域名的目的的:如下
<Host name="B.xxx.com" 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 "%r" %s %b" />
</Host>
<Host name="C.xxx.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>wap.tengjin.com</Alias>
<Context path="" docBase="/opt/apache-tomcat-7.0.63/webappswap" reloadable="true"></Context>
</Host>
<Host name="D.xxxx.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>sj.jieduoduo.tengjin.com</Alias>
<Context path="" docBase="/opt/apache-tomcat-7.0.63/webappsjieduo" reloadable="true"></Context>
</Host>
而当时A项目是直接使用IP访问的。先在的需求是将A项目也绑定上另外一个二级域名 A.xxx.com
这就需要用到nginx做请求的分发了,占用80端口,将请求分发到不同的端口上,并指定域名
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
#一个tomcat下放了三个项目 用的是8083接口
upstream tomcat_client {
server localhost:8083;
}
#这个放的是安卓,ios的接口
upstream tomcat_app_api {
server localhost:8080;
}
#这个放的是图片服务器
upstream tomcat_img {
server localhost:8088;
}
server {
listen 80;
server_name B.xxx.com;
location / {
proxy_pass http://tomcat_client;
proxy_redirect default;
#设置代理
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name C.xxx.com;
location / {
proxy_pass http://tomcat_client;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name D.xxx.com;
location / {
proxy_pass http://tomcat_client;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#安卓 ios接口
server {
listen 80;
server_name A.xxx.com;
location / {
proxy_pass http://tomcat_app_api;
proxy_redirect default;
#设置代理
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#图片服务器接口
server {
listen 80;
server_name E.xxx.com;
location / {
proxy_pass http://tomcat_img;
proxy_redirect default;
#设置代理
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
以上的配置,后来又增加了一个图片服务器的二级域名。