溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

nginx+tomcat單個(gè)域名及多個(gè)域名配置教程

發(fā)布時(shí)間:2020-08-25 13:26:11 來源:腳本之家 閱讀:157 作者:夏雪冬日 欄目:服務(wù)器

項(xiàng)目開發(fā)接近尾聲,開始著手在生產(chǎn)環(huán)境部署項(xiàng)目,開發(fā)階段部署項(xiàng)目都沒用nginx。項(xiàng)目是采用SOA架構(gòu),多系統(tǒng)開發(fā),主要包括服務(wù)系統(tǒng)、中臺系統(tǒng)、后臺系統(tǒng)、金融系統(tǒng)、接口系統(tǒng)、調(diào)度系統(tǒng)、報(bào)表系統(tǒng)等。這類分布式的系統(tǒng),一般也都會用到nginx來做負(fù)載均衡。

從公司剛成立就進(jìn)來,趕鴨子上架來做架構(gòu)師,負(fù)責(zé)公司的所有研發(fā)事情,搭建公司的整個(gè)技術(shù)架構(gòu),起初的所有核心業(yè)務(wù)代碼基本都由自己親自把關(guān)來進(jìn)行編碼。系統(tǒng)也從最初的只有一個(gè)pc端,發(fā)展到如今pc中臺、后臺、android端3個(gè)app、iOS端3個(gè)app,產(chǎn)品越做越多,親自負(fù)責(zé)招聘面試、培訓(xùn)。之前很多時(shí)候都有過無助和苦惱,因?yàn)樨?fù)責(zé)公司整個(gè)架構(gòu),又要負(fù)責(zé)核心業(yè)務(wù)的編碼,技術(shù)難點(diǎn)的攻克,新員工的招聘及培訓(xùn),現(xiàn)在團(tuán)隊(duì)已經(jīng)都發(fā)展到16個(gè)人,而且這全是研發(fā)人員。

回想這一路,覺得之前看似爬不過去的山也不過如此,也許這就是成長吧,成長總是會伴隨些許汗水與淚水吧。由于是負(fù)責(zé)團(tuán)隊(duì)的所有事情,所以數(shù)據(jù)庫的維護(hù)、遷移數(shù)據(jù)、建索引等性能優(yōu)化,項(xiàng)目部署等所有事情必須得一肩挑,不要問我為什么公司沒有DBA?為什么沒有運(yùn)維?我真的只能給你一個(gè)眼神,讓你慢慢去體會。

話不多說,直接開始技術(shù)干貨分享。

nginx做負(fù)載均衡的優(yōu)勢網(wǎng)上有很多介紹資料,這里我不再多做介紹。因?yàn)橛泻芏嘞到y(tǒng)要部署,涉及到域名、二級域名、多個(gè)域名等的部署。在實(shí)際的部署由于對nginx的不夠熟悉,遇到過很多坑,其中這種多域名的配置,xxxx.com轉(zhuǎn)發(fā)到www.xxxx.com、訪問域名轉(zhuǎn)發(fā)到tomcat里的項(xiàng)目等,現(xiàn)在先總結(jié)一部坑的解決辦法。

如將xxxx.com這個(gè)域名指向8082端口里的tomcat項(xiàng)目,在做這個(gè)介紹前先講個(gè)插曲,如訪問xxxx.com需轉(zhuǎn)向到www.xxxx.com,這一點(diǎn)很多人都會忽略。

現(xiàn)在如果要部署中臺、后臺、金融系統(tǒng),找到nginx/conf/nginx.conf,修改配置:

upstream web{
  server localhost:8082;
}
upstream admin{
  server localhost:8083;
}
upstream finance{
  server localhost:8084;
}
server {
  listen    80;
  server_name finance.xxxx.com;
  #charset koi8-r;
  #access_log logs/host.access.log main;
  location / {
    proxy_pass http://finance;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  #error_page 404       /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  html;
  }
}
server {
  listen    80;
  server_name www.xxx.com;
  #charset koi8-r;
  #access_log logs/host.access.log main;
  location / {
    proxy_pass http://web;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      
  }
  #error_page 404       /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  html;
  }
  # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  #  proxy_pass  http://127.0.0.1;
  #}
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  #location ~ \.php$ {
  #  root      html;
  #  fastcgi_pass  127.0.0.1:9000;
  #  fastcgi_index index.php;
  #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #  include    fastcgi_params;
  #}
  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}
server {
  server_name xxxx.com;
  rewrite ^(.*) http://www.xxxx.com$1 permanent;
}
server {
  listen    80;
  server_name admin.xxxx.com;
  #charset koi8-r;
  #access_log logs/host.access.log main;
  location / {
    proxy_pass http://admin;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      
  }
  #error_page 404       /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  html;
  }
  # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  #  proxy_pass  http://127.0.0.1;
  #}
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  #location ~ \.php$ {
  #  root      html;
  #  fastcgi_pass  127.0.0.1:9000;
  #  fastcgi_index index.php;
  #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #  include    fastcgi_params;
  #}
  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}

 上面的配置還包括了訪問xxxx.com轉(zhuǎn)向www.xxxx.com的配置,如下:

server {
   server_name xxxx.com;
   rewrite ^(.*) http://www.xxxx.com$1 permanent;
 }

nginx的基本配置大致就是這樣,如果綁定多個(gè)域名(不管是一級域名還是二級域名),需配置多個(gè)server,你會發(fā)現(xiàn)這幾個(gè)server配置都差不多,主要是更改server_name及proxy_pass指向即可。upstream節(jié)點(diǎn)其實(shí)就是代理服務(wù)的訪問路徑。

如果此時(shí)訪問域名,你會發(fā)現(xiàn)nginx的配置生效了,只是目前顯示的是tomcat的默認(rèn)界面。nginx的配置基本就這樣了,接下來對tomcat做些配置的修改。找到tomcat里的conf/server.xml,注釋掉默認(rèn)的Host配置,添加如下Host配置:

<Host name="localhost" appBase="E:\tomcat\apache-tomcat-8.0.35-8082\webapps\web" deployOnStartup ="false" autoDeploy="false" unpackWARs="true">
       <Context path="/" docBase="E:\tomcat\apache-tomcat-8.0.35-8082\webapps\web" />
       <Valve  className="org.apache.catalina.valves.AccessLogValve" 
       directory="logs"   prefix="localhost_access_log"  suffix=".txt" 
       pattern="%h %l %u %t "%r" %s %b"  />
</Host>

以上是windows服務(wù)器下的配置,如為linux,只需更改appBase和docBase,指向項(xiàng)目的路徑。tomcat的配置也已經(jīng)完成,重啟tomcat,訪問域名就指向了tomcat里的項(xiàng)目。

總結(jié)

以上所述是小編給大家介紹的nginx+tomcat單個(gè)域名及多個(gè)域名配置,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI