nginx 輔助 同一個tomcat繫結多個二級域名及輔助多個tomcat繫結多個二級域名
阿新 • • 發佈:2019-02-20
公司現階段部署環境,一臺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; } } }
以上的配置,後來又增加了一個圖片伺服器的二級域名。