[Linux]nginx与Tomcat整合配置(安装配置教程一条龙,可负载均衡)
前言和介绍
nginx是现在最流行的web服务器之一,tomcat是Java界最流行的应用服务器之一,本文将介绍两个如何结合配置一起使用,也可以实现高级的负载均衡。
安装nginx
如果是CentOS等环境,可以使用yum命令安装
#安装epel-release
yum install -y epel-release
#安装nginx
yum install -y nginx
#启动nginx
systemctl start nginx
#开机自动启动nginx
systemctl enable nginx
如果是Ubuntu等,可以使用apt命令安装
#这一步可能不需要
sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx
#show nginx version
nginx -v
也可以到nginx官网下载编译安装
#准备
yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
#下载
#地址: http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.19.6.tar.gz
tar zxvf nginx-1.19.6.tar.gz
cd nginx-1.19.6
./configure
--sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf
--with-http_ssl_module
make
make install
安装tomcat
Tomcat可以直接去 http://tomcat.apache.org/下载后解压,就可以到bin下运行startup.sh,如果想要把tomcat安装成服务,以及如何调整JVM内存参数等,请看我的另一篇博客:https://blog.terrynow.com/2020/12/27/centos-tomcat-as-service/
配置nginx
修改/etc/nginx/nginx.conf,或者新建一个子配置文件/etc/nginx/config.d/appname.conf (appname就是你的应用的名字,具体可以根据实际情况修改)
server {
listen 80;
#域名,根据你的实际情况修改
server_name appname.example.com;
#安全设置
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
#最大上传文件大小
client_max_body_size 50m;
charset utf-8;
#日志文件
access_log /var/log/nginx/appname.access.log main;
location ~* \.(gif|jpg|jpeg|png|bmp|swf)$ {
#过期时间为30天,
#图片文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}
location ~* \.(js|css)$ {
expires 10d;
}
location ~ ^/(WEB-INF)/ {
deny all;
}
location ~* favicon.ico {
access_log off;
alias /opt/tomcat/webapps/ROOT/favicon.ico;
}
#如果有静态资源,比如都放在assets***意root里的路径只要到上一层就可以
location ^~ /assets/ {
access_log off;
root /opt/apache-tomcat-8.0.30/webapps/ROOT;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#这个加上,才会让java里的代码获取schema的时候,https不会误以为是http
proxy_set_header X-Forwarded-Proto $scheme;
}
#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;
}
}
这样配置好后,重启nginx后,就把80端口的流量都导到后端tomcat的8080端口了。
nginx配置tomcat负载均衡
我们假设nginx安装在192.168.1.1的服务器上,后面有两台tomcat服务器(192.168.1.2:8080和192.168.1.3:8080)
在配置文件中,http节点下,增加:
http {
# ......
upstream test.com {
#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
#192.168.1.2:8080、192.168.1.3:8080对应tomcat服务器地址
server 192.168.1.2:8080 weight=1;
server 192.168.1.3:8080 weight=2;
}
server {
listen 80;
server_name appname.example.com;
location / {
#配置反向代理地址
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcat;
proxy_redirect default;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
至此,Nginx 与 Tomcat 整合实现负载均衡已经配置完了。可以修改tomcat的web页面,比如在不起眼的地方,多加一个当前服务器的IP来标记处理请求的tomcat来自哪一台机器,多次请求nginx,来观察是否实现了负载均衡。
更多开发和运维过程中遇到的坑已经解决问题的方案、干货分享请访问 https://blog.terrynow.com/
上一篇: ClamAV安装使用详解
下一篇: jenkins 安装