配置nginx反向代理tomcat,并使用redis实现会话保持

目录

一  nginx安装及配置

1. yum安装

2. 编译安装

2.1 准备编译安装的基础环境:

2.2 安装Nginx

2.3 验证版本及编译参数

2.4 创建nginx自启动脚本

2.5 配置nginx

二  tomcat安装及配置

1. 安装jdk 8

1.1 yum安装

1.2 rpm包安装

1.3 二进制安装

2. 安装tomcat(两个节点分别安装)

2.1 yum安装

2.2 二进制安装

2.3. 配置server.xml

2.4. 配置Redis+Session共享

2.5. 将依赖的jar包拷贝到tomcat的lib目录下

2.6. 配置自定义测试页面

三  redis安装及配置

1. 下载redis源码包

2. 编译安装命令

3. 编辑redis服务启动脚本

4. 创建命令软连接

5. 启动redis

四  访问测试页面


一 nginx安装及配置

1. yum安装

需要提前配置好epel源

[root@s1 ~]# yum install epel-release -y
[root@s1 ~]# yum install -y nginx
#查看nginx相关文件
[root@s1 ~]# rpm -ql nginx 
#查看nginx安装包信息
[root@s1 ~]# rpm -qi nginx
#查看帮助
[root@s1 ~]# nginx -h
nginx version: nginx/1.16.1
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit #显示版本和编译参数
-t : test configuration and exit #测试配置文件是否异常
-T : test configuration, dump it and exit #测试并打印
-q : suppress non-error messages during configuration testing #静默模式
-s signal : send signal to a master process: stop, quit, reopen, reload #发送信号
-p prefix : set prefix path (default: /usr/share/nginx/) #指定Nginx目录
-c filename : set configuration file (default: /etc/nginx/nginx.conf) #配置文件路径
-g directives : set global directives out of configuration file #设置全局指令

2. 编译安装

2.1 准备编译安装的基础环境:

[root@s2 ~]# yum install -y vim lrzsz tree screen psmisc lsof tcpdump wget ntpdate
gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel 
nettools iotop bc zip unzip zlib-devel bash-completion nfs-utils automake libxml2
libxml2-devel libxslt libxslt-devel perl perl-ExtUtils-Embed

2.2 安装Nginx

官方源码包下载地址:
https://nginx.org/en/download.html

[root@s2 ~]# cd /usr/local/src/
[root@s2 src]# wget https://nginx.org/download/nginx-1.16.1.tar.gz
[root@s2 src]# tar xf nginx-1.16.1.tar.gz
[root@s2 src]# cd nginx-1.16.1/
编译是为了检查系统环境是否符合编译安装的要求,比如是否有gcc编译工具,是否支持编译参数当中的模块,并根据
开启的参数等生成Makefile文件为下一步做准备:
[root@s2 nginx-1.16.1]#./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
[root@s2 nginx-1.16.1]# make #编译步骤,根据Makefile文件生成相应的模块
[root@s2 nginx-1.16.1]# make install #创建目录,并将生成的模块和文件复制到相应的目录:
[root@s2 nginx-1.16.1]# useradd nginx -s /sbin/nologin -u 2000 #以普通用户启动nginx
[root@s2 nginx-1.16.1]# chown nginx.nginx -R /apps/nginx/

2.3 验证版本及编译参数

[root@s2 nginx-1.16.1]# /apps/nginx/sbin/nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx 
--with-http_ssl_module --with-http_v2_module --with-http_realip_module 
--with-http_stub_status_module --with-http_gzip_static_module --with-pcre 
--with-stream --with-stream_ssl_module --with-stream_realip_module

2.4 创建nginx自启动脚本

[root@s1 ~]# cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/apps/nginx/sbin/nginx -t
ExecStart=/apps/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target

2.5 配置nginx

Nginx的配置文件的组成部分: 主配置文件:nginx.conf,子配置文件 include conf.d/*.conf
全局配置

[root@s2 ~]# grep -v "#" /apps/nginx/conf/nginx.conf | grep -v "^$"
user nginx nginx; #启动Nginx工作进程的用户和组
worker_processes auto; #启动Nginx工作进程的数量
worker_cpu_affinity 00000001 00000010 00000100 00001000; #将Nginx工作进程绑定到指定的CPU核心
error_log /apps/nginx/logs/error.log error;
pid /apps/nginx/logs/nginx.pid;
worker_priority 0; #工作进程nice值,-20~19
worker_rlimit_nofile 65536; #这个数字包括Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与
客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.
daemon off; #前台运行Nginx服务用于测试、docker等环境。
events { #事件模型配置参数
    worker_connections 65536; #设置单个工作进程的最大并发连接数
    use epoll; #使用epoll事件驱动,Nginx支持众多的事件驱动,比如select、poll、epoll,只能设置在
events模块中设置。   
}    

http详细配置

http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    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 /var/log/nginx/access.log main;
    tcp_nopush on;
    tcp_nodelay on;
    upstream tomcat_server {
         server 162.168.4.71:8089 weight=1 fail_timeout=5s max_fails=3; 
         server 162.168.4.72:8089 weight=1 fail_timeout=5s max_fails=3;
    }
    server {
        listen 80;
        server_name _;
        location / {
            proxy_pass http://tomcat_server;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }    
}

二 tomcat安装及配置

1. 安装jdk 8

1.1 yum安装

Debian, Ubuntu, etc.
$ sudo apt-get install openjdk-8-jre openjdk-8-jdk 
Fedora, Oracle Linux, Red Hat Enterprise Linux, etc.
$ su -c "yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel" 

1.2 rpm包安装

(1)登录到https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html,下载oracle版本的jdk(本次下载jdk 8 LINUX 64位,需登录oracle账户下载);            

 

(2)安装并配置环境变量

安装
# yum install jdk-8u192-linux-x64.rpm
# ll /usr/java
lrwxrwxrwx 1 root root 16 1月 13 01:22 default -> /usr/java/latest
drwxr-xr-x 8 root root 258 1月 13 01:22 jdk1.8.0_192
lrwxrwxrwx 1 root root 28 1月 13 01:22 latest -> /usr/java/jdk1.8.0_192  
java环境变量配置
# vi /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
# . /etc/profile.d/jdk.sh
查看版本
# java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode) 

1.3 二进制安装

 

下载二进制包,解压至任意目录,配置环境变量同上。

2. 安装tomcat(两个节点分别安装)

2.1 yum安装

可以使用CentOS7 yum源自带的安装。yum源中是Tomcat 7.0版本。安装完通过浏览器可以观察一下首页

# yum install tomcat tomcat-admin-webapps tomcat-webapps
# systemctl start tomcat.service
ss -tanl 

2.2 二进制安装

采用Apache官网下载,下载8.x.x 

# tar xf apache-tomcat-8.5.42.tar.gz -C /usr/local
# cd /usr/local
# ln -sv apache-tomcat-8.5.42/ tomcat
"tomcat" -> "apache-tomcat-8.5.42/"
# cd tomcat
# cd bin
# ./catalina.sh --help
# ./catalina.sh version
# ./catalina.sh start
# ss -tanlp
# ./catalina.sh stop
其他启停脚本
# ./startup.sh
# ./shutdown.sh

useradd -r java 建立系统账号
上例中,启动身份是root,如果使用普通用户启动可以使用

# useradd -r java
# chown -R java.java ./*
# su - java -c '/usr/local/tomcat/bin/catalina.sh start'
# ps -aux | grep tomcat

2.3. 配置server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="44ba3c71d57f494992641b258b965f28">
<Service name="Catalina">
#修改访问端口,默认8080
<Connector port="8089" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
</Server> 

2.4. 配置Redis+Session共享

# cd /usr/local/tomcat/conf/
# cp context.xml context.xml.bak
# cat context.xml
......
    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> 
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" 
             host="162.16.4.203" 
             port="6379" 
             database="0"
             maxInactiveInterval="60" /> 

2.5. 将依赖的jar包拷贝到tomcat的lib目录下

# pwd
/usr/local/src/tomcat_redis_session/jar
# ll
total 676
-rw-rw-r--. 1 root root 111969 Jul 29  2015 commons-pool2-2.3.jar
-rw-rw-r--. 1 root root 553762 Oct 16  2017 jedis-2.7.3.jar
-rw-rw-r--. 1 root root  20241 Aug 27 16:45 tomcat-redis-session-manager-master-2.0.0.jar
# cp -rf ./* /usr/local/tomcat/lib/ 

2.6. 配置自定义测试页面

节点一

# mkdir /usr/local/tomcat/webapps/test
# vim /usr/local/tomcat/webapps/test/index.jsp
<html>
    <body bgcolor="green">    
    <center>   
    <%=  request.getSession().getId()  %>   
    <h1>this is Tomcat-server1! </h1>
    </center>
    </body>
</html>

节点二

 # mkdir /usr/local/tomcat/webapps/test
# vim /usr/local/tomcat/webapps/test/index.jsp
<html>
    <body bgcolor="red">    
    <center>   
    <%=  request.getSession().getId()  %>   
    <h1>this is Tomcat-server2! </h1>
    </center>
    </body>
</html>

三 redis安装及配置

1. 下载redis源码包

下载地址 http://download.redis.io/releases/

2. 编译安装命令

官方的安装命令:
https://redis.io/download 

# pwd
/usr/local/src
# tar xf redis-5.0.3.tar.gz
# cd redis-5.0.3
# make PREFIX=/apps/redis install #指定redis安装目录
# ll /usr/local/redis/
total 0
drwxr-xr-x 2 root root 134 Dec 13 09:21 bin
# mkdir /apps/redis/{etc,logs,data,run} #创建配置文件、日志、数据等目录
# cp redis.conf /apps/redis/etc/
# groupadd -g 1000 redis && useradd -u 1000 -g 1000 redis -s /sbin/nologin
# chown redis.redis -R /apps/redis

3. 编辑redis服务启动脚本

[root@s1 ~]# cat /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
#ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target

4. 创建命令软连接

# ln -sv /apps/redis/bin/redis-* /usr/bin/
‘/usr/bin/redis-benchmark’ -> ‘/apps/redis/bin/redis-benchmark’
‘/usr/bin/redis-check-aof’ -> ‘/apps/redis/bin/redis-check-aof’
‘/usr/bin/redis-check-rdb’ -> ‘/apps/redis/bin/redis-check-rdb’
‘/usr/bin/redis-cli’ -> ‘/apps/redis/bin/redis-cli’
‘/usr/bin/redis-sentinel’ -> ‘/apps/redis/bin/redis-sentinel’
‘/usr/bin/redis-server’ -> ‘/apps/redis/bin/redis-server 

5. 启动redis

# systemctl daemon-reload
# systemctl start redis
# ss -tnl 

 

四  访问测试页面

redis安装启动成功后重启tomcat,访问nginx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
nginx反向代理tomcat配置可以按照以下步骤进行: 1. 首先,在nginx的官方网站下载并安装nginx。可以使用如下命令下载nginx压缩包:wget http://nginx.org/download/nginx-1.0.9.tar.gz 2. 配置nginx反向代理。在nginx配置文件中,使用upstream指令来定义多个代理服务器。比如,可以按照下面的配置来定义两个tomcat服务器: upstream tomcat_server1 { server 192.168.0.106:8080; } upstream tomcat_server2 { server 192.168.0.106:8081; } 3. 接下来,配置虚拟主机。在nginx配置文件中,通过server指令来配置虚拟主机。每个虚拟主机都对应一个域名和端口号。比如,如下配置示例中,我们配置了两个虚拟主机,分别监听80端口和81端口,并将请求转发给对应的tomcat服务器: server { listen 80; server_name www.test1.com; location / { proxy_pass http://tomcat_server1; index index.jsp index.html index.htm; } } server { listen 81; server_name www.test2.com; location / { proxy_pass http://tomcat_server2; index index.jsp index.html index.htm; } } 4. 最后,启动nginx服务器并进行测试。使用命令启动nginx服务器,并分别访问www.test1.com和www.test2.com,测试反向代理是否正常工作。 通过以上配置nginx将会根据请求的域名和端口号,将请求转发给对应的tomcat服务器,从而实现反向代理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Nginx+Tomcat 实现反向代理](https://blog.csdn.net/sinat_41075146/article/details/125448334)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值