Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx+tomcat单个域名及多个域名配置

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

作者头像
猿人谷
发布于 2018-01-17 01:57:58
发布于 2018-01-17 01:57:58
5.4K00
代码可运行
举报
文章被收录于专栏:猿人谷猿人谷
运行总次数:0
代码可运行

项目开发接近尾声,开始着手在生产环境部署项目,开发阶段部署项目都没用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,修改配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    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的配置,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   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配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <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里的项目。

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx配置文件nginx.conf全解
nginx配置文件nginx.conf的配置http、upstream、server、location等;
青山师
2023/05/05
7300
Nginx/Tengine通用配置教程
Nginx/Tengine通用配置教程,包含多域名共用一个端口指向不同程序、Nginx负载均衡配置、Https配置、禁止通过IP访问、设置访问流量并发速率、Nginx反代PHP、Nginx反代Tomcat。 Nginx通用配置: user www www; worker_processes auto; worker_cpu_affinity auto; dso { load ngx_http_concat_module.so; load ngx_http_sysguard_module.so; }
4xx.me
2022/06/09
9440
Nginx/Tengine通用配置教程
Vue的Nginx前端代理配置
当用vue开发好前端需要打包时,一般都需要配置下代理方便访问后台接口,避免出现找不到链接或者跨域问题。
杨永贞
2022/01/07
2.2K0
nginx配置多个server监听80端口
有时候需要部署很多个服务时,如果不想让域名的后面带上端口号这个问题应该怎么做呢,实际也是有这样的场景的,本小节来做一个学习
在水一方
2022/06/14
5.9K0
nginx配置多个server监听80端口
nginx 负载均衡时,一台tomcat宕机时的问题 自动切换
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。具体配置过程如下:
全栈程序员站长
2022/09/15
2.2K0
Nginx + Tomcat 有关SSI 的那些事儿
在工作中使用到SSI,对于静态页面由Nginx处理SSI是没有问题。对于jsp 文件里面的SSI怎么办呢?我们不想开启Tomcat的 SSI功能,我们希望SSI 的解析交给Nginx来完成,Tomcat 只处理应用。 下面的文章用实例说明这是可行的。 文章节选择 《Netkiller Web 手札》 Tomcat 篇 3.2.6.5. Proxy 与 SSI 背景:nginx + tomcat 模式,nginx 开启 SSI , Tomcat 动态页面中输出 SSI 标签 # cat /etc/ngi
netkiller old
2018/03/05
1.1K0
nginx 同一 iP 多域名配置方法(单文件)
在 nginx.conf 文件里面 http{} 内增加一个 server{} 即可:
卓越笔记
2023/02/17
1.7K0
Linux中Nginx配置域名访问多个项目解决方案
首先是系统环境:CentOS7,Nginx版本:1.62(如需其他版本自行到官网下载)
芈亓
2022/06/17
3.3K0
Linux中Nginx配置域名访问多个项目解决方案
一文教你学会使用Nginx
前段时间,了不起给大家说过如果使用 Docker 发布自己的后端项目,也就不再使用 Jar 包进行项目的发版操作,但是这其中就又涉及到了前端如何发版,为什么这么说,因为资深前端开发,可能知道各种发版内容等,但是对于一般的前端开发来说,走到build后,就已经算是比较不错了,接下来如果没有运维的话,那么在不使用 jekins 的情况下,就只能是后端来进行发版了,今天我们讲讲这个docker 是如何发布前端应用的。
Java极客技术
2024/01/02
2490
一文教你学会使用Nginx
Nginx实例与localtion匹配规则
〇、官方手册 一、反向代理 docker run --name nginx -d -p 80:80 -v /nginx/html:/usr/share/nginx/html -v /nginx/nginx.conf:/etc/nginx/nginx.conf nginx 下面为容器的端口!!!!!! # 运行用户 #user nobody; # 启动进程,通常设置成和cpu数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.lo
wuweixiang
2019/03/12
9130
nginx如何代理多个express服务
背景是这样的,我目前有一台服务器,域名已经申请了brzhang.club,证书也申请了,可以看到是https的,安全访问无污染,哈哈!
老码小张
2019/05/13
2.2K0
nginx 代理多个服务器——多个server方式
上一篇文章(http://blog.csdn.net/wild46cat/article/details/52840125)介绍了nginx的基本配置和使用方法,并且简单的介绍了一下如何利用nginx结合tomcat进行使用,达到反向代理的作用。现在我们要使用nginx达到这样的一个目的,能够代理多个服务器。
Java架构师必看
2021/05/14
7.7K0
nginx 代理多个服务器——多个server方式
nginx 设置 websocket 反向代理
废话不多说,nginx 配置如下: #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
前Thoughtworks-杨焱
2021/12/08
5450
JAVA单服务应用拆分成多个服务的实践(3)--前端的nginx转发
上篇文章JAVA单服务应用拆分成多个服务的实践(2)--服务的dubbo化已经将部分模块微服务化了,但我们怎么测试? 我们的目标是支持ALL In One,又要支持多个微服务,但前端怎么处理,前端代码又只有一个版本,但又要怎么面向多个微服务呢。 这样的话,我们只能引入伟大的nginx。 前端只认一个,就使用nginx的转发,将特定的请求转发到微服务的接口里,让前端无感请求到到另一服务中。 nginx的配置如下:
星痕
2019/03/15
7210
Nginx配置反向代理和负载均衡
今天给大家介绍一下如何利用Nginx进行反向代理,之所以介绍这个的原因是,因为开发的时候遇到一个很尴尬的场景。因为是springboot项目,所以每一个控制类的端口都不一样,但是app那边所有接口都是对应一个ip和一个端口。如果我们想要实现本地app调式,就必须配置一个nginx,进行反向代理连接我们启动的服务器。废话不多说,开始我们nginx配置的介绍。
林老师带你学编程
2019/05/25
8590
nginx前后端部署配置文件
server { listen 80; server_name localhost; #charset koi8-r; # 动静分离 #access_log logs/host.access.log main; location /qiduanduan { alias /usr/local/nginx/; index index.html index.htm;
高大北
2022/06/14
3740
nginx+tomcat绑定二级域名,部署多个应用
本文介绍在阿里云上开通二级域名,并使用单个tomcat部署多个应用和ngnix+tomcat(多个)两种方式实现多个应用的部署,以下为操作步骤。
三哥
2019/05/13
3.7K0
nginx+tomcat绑定二级域名,部署多个应用
Nginx安装与使用
1 : wget下载: http://nginx.org/download/nginx-1.4.2.tar.gz
HUC思梦
2020/09/03
5780
服务器监控配置文件备份
nginx配置文件 #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;
无敌小菜鸟
2021/09/02
2.2K0
nodejs与nginx的完美搭配
node自己本身可以作为服务器进行驱动,但是node本身对文件的处理能力并不是很好,所以当我们的生产环境中应尽量使用nginx来处理静态的资源以及反向代理,同时也解决了node分布式以及负载均衡的相关问题。
用户1065635
2019/03/21
9.3K0
相关推荐
Nginx配置文件nginx.conf全解
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验