nginx+tomcat单个域名及多个域名配置

项目开发接近尾声,开始着手在生产环境部署项目,开发阶段部署项目都没用nginx。项目是采用SOA架构,多系统开发,主要包括服务系统、中台系统、后台系统、金融系统、接口系统、调度系统、报表系统等。这类分布式的系统,一般也都会用到nginx来做负载均衡。

从公司刚成立就进来,赶鸭子上架来做架构师,负责公司的所有研发事情,搭建公司的整个技术架构,起初的所有核心业务代码基本都由自己亲自把关来进行编码。系统也从最初的只有一个pc端,发展到如今pc中台、后台、android端3个app、iOS端3个app,产品越做越多,亲自负责招聘面试、培训。之前很多时候都有过无助和苦恼,因为负责公司整个架构,又要负责核心业务的编码,技术难点的攻克,新员工的招聘及培训,现在团队已经都发展到16个人,而且这全是研发人员。

回想这一路,觉得之前看似爬不过去的山也不过如此,也许这就是成长吧,成长总是会伴随些许汗水与泪水吧。由于是负责团队的所有事情,所以数据库的维护、迁移数据、建索引等性能优化,项目部署等所有事情必须得一肩挑,不要问我为什么公司没有DBA?为什么没有运维?我真的只能给你一个眼神,让你慢慢去体会。

话不多说,直接开始技术干货分享。

nginx做负载均衡的优势网上有很多介绍资料,这里我不再多做介绍。因为有很多系统要部署,涉及到域名、二级域名、多个域名等的部署。在实际的部署由于对nginx的不够熟悉,遇到过很多坑,其中这种多域名的配置,xxxx.com转发到www.xxxx.com、访问域名转发到tomcat里的项目等,现在先总结一部坑的解决办法。

如将xxxx.com这个域名指向8082端口里的tomcat项目,在做这个介绍前先讲个插曲,如访问xxxx.com需转向到www.xxxx.com,这一点很多人都会忽略。

现在如果要部署中台、后台、金融系统,找到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转向www.xxxx.com的配置,如下:

server {

server_name xxxx.com;

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

}

nginx的基本配置大致就是这样,如果绑定多个域名(不管是一级域名还是二级域名),需配置多个server,你会发现这几个server配置都差不多,主要是更改server_name及proxy_pass指向即可。upstream节点其实就是代理服务的访问路径。

如果此时访问域名,你会发现nginx的配置生效了,只是目前显示的是tomcat的默认界面。nginx的配置基本就这样了,接下来对tomcat做些配置的修改。找到tomcat里的conf/server.xml,注释掉默认的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服务器下的配置,如为linux,只需更改appBase和docBase,指向项目的路径。tomcat的配置也已经完成,重启tomcat,访问域名就指向了tomcat里的项目。

希望能对大家有帮助,如果在使用的过程中遇到什么问题,可以在底下留言。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏皮振伟的专栏

[network][wenbench]一款不错的HTTP压力测试工具

前言: 作者曾经接到一个需求,会在一个相对较短的时间内,会有大量的http请求。 代码写完之后,需要压力测试一下。在网上无意间看到过webbench这个工具,于...

2778
来自专栏张善友的专栏

openSUSE Linux 10.2 多语言版

此发布版本是由 openSUSE.org 项目创建的。Novell 赞助的 openSUSE 项目是一个协作的社区活动,提供世界上最有用的开放源代码计算平台,即...

1788
来自专栏FreeBuf

Twitter不慎以纯文本形式泄漏用户密码

经过内部审计之后,Twitter近日承认,他们的密码存储机制存在错误,导致内部日志中记录了一些用户的密码。

672
来自专栏猿人谷

nginx+tomcat单个域名及多个域名配置

项目开发接近尾声,开始着手在生产环境部署项目,开发阶段部署项目都没用nginx。项目是采用SOA架构,多系统开发,主要包括服务系统、中台系统、后台系统、金融系统...

2116
来自专栏张善友的专栏

Windows Server 8 开发预览版

与Windows 8 开发预览版同时上线的 Windows Server 8 开发预览版也出来了。有兴趣的朋友可以去MSDN下载(要求有msdn的账号)。 安装...

17810
来自专栏NewTech视野

从黑客那里保护公司网站的12个技巧

通常您的网站开放运行如同无需锁门但依然安全开放的办公室一样:因为大多数人不会仅仅步入并访问您的办公室就洞察到您所有的数据信息。偶尔您会发现有不怀好意的人进入并偷...

710
来自专栏FreeBuf

2013至2015年iOS平台网银应用安全性对比

针对分布在不同地理位置上的一些重要银行的iOS平台网银应用,本文主要从传输安全、编译器保护、UIWebView、数据存储、日志文件、二进制文件等方面研究了它们的...

1747
来自专栏纯洁的微笑

为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?

802
来自专栏Rainbond开源「容器云平台」

好雨云帮两周问答集锦(2016.12.19-2017.01.01)

973
来自专栏古时的风筝

Docker:Ubuntu下的安装

Docker是什么 Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托 管在 GitHub ...

2835

扫码关注云+社区