一、利用Nginx反向代理Jpress+Tomcat

1、环境准备

服务器 IP地址 作用 系统版本
Proxy代理服务器 10.0.0.101 负载均衡Nginx Web服务器 Ubuntu2004
Jpress服务器 10.0.0.102 网站服务器1 Ubuntu2004
Jpress服务器 10.0.0.103 网站服务器2 Ubuntu2004
数据库 10.0.0.104 数据库服务器 Ubuntu2004
client 测试访问网站 Windows
2、安装jpress
# jpress服务器(10.0.0.102和10.0.0.103都需操作):
[root@ubuntu2004 ~]#bash install_tomcat.sh
[root@ubuntu2004 ~]#mkdir /data/jpress -p
[root@ubuntu2004 ~]#cd /data/jpress/ [root@ubuntu2004 jpress]#ls
jpress-v4.2.0.war
[root@ubuntu2004 jpress]#mv jpress-v4.2.0.war ROOT.war
[root@ubuntu2004 jpress]#chown -R tomcat. /data/jpress/
[root@ubuntu2004 jpress]#vim /usr/local/tomcat/conf/server.xml
#增加以下</Host>开始的三行
</Host>
<Host name="jpress.wang.org" appBase="/data/jpress" unpackWARs="true" autoDeploy="true">
</Host>
..... </Engine>
</Service>
</Server>
[root@ubuntu2004 jpress]#systemctl restart tomcat.service
# 如果想显示个性的tomcat版本,在端口行最后增加server=“****”
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" Server="Dayu-Jpress"/>

3、创建数据库
#数据库服务器(10.0.0.104):
[root@mysql ~]#vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
default_authentication_plugin=mysql_native_password #增加此行 #bind-address = 127.0.0.1 #注释掉
#mysqlx-bind-address = 127.0.0.1 #注释掉 [root@mysql ~]#systemctl restart mysql.service
# 客户端测试连接

4、 配置Nginx反向代理
[root@nginx ~]#bash nginx_install.sh
[root@nginx ~]#mkdir /apps/nginx/conf/conf.d
[root@nginx ~]#vim /apps/nginx/conf/nginx.conf
....
include /apps/nginx/conf/conf.d/*.conf; #最后增加此行
}
[root@nginx ~]#vim /apps/nginx/conf/conf.d/wang.org.conf
upstream jpress {
server 10.0.0.102:8080;
server 10.0.0.103:8080;
}
server {
listen 80;
server_name jpress.wang.org;
location / {
proxy_pass http://jpress;
proxy_set_header host $http_host;
}
}
[root@nginx ~]#nginx -t
[root@nginx ~]#nginx -s reload
5、客户端测试

二、安装Memcached实现会话保持

1、环境准备
服务器 IP地址 作用 系统版本
Proxy代理服务器 10.0.0.101 负载均衡Nginx Web服务器 Ubuntu2004
Jpress服务器 10.0.0.105 网站服务器1 Ubuntu2004
Jpress服务器 10.0.0.106 网站服务器2 Ubuntu2004
数据库 10.0.0.104 数据库服务器 Ubuntu2004
client 测试访问网站 Windows
2、搭建Jpress
#Jpress(10.0.0.105、10.0.0.106):

[root@jpress2 ~]# mkdir /data/jpress1 -p
[root@jpress2 ~]# mv jpress-v4.2.0.war ROOT.war
[root@jpress2 ~]# mv ROOT.war /data/jpress1/
[root@jpress2 ~]# chown -R tomcat. /data/jpress1
[root@jpress2 ~]# bash install_tomcat.sh
[root@jpress2 ~]# vim /usr/local/tomcat/conf/server.xml
...
<Host name="jpress.wang.org" appBase="/data/jpress2" unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="/opt" reloadable="true" /> #增加一个测试路径
</Host>
....
[root@jpress2 ~]# systemctl restart tomcat.service [root@jpress2 ~]# apt install memcached
[root@jpress2 ~]# vim /usr/local/tomcat/conf/context.xml
#以下内容增加在最后一行前
....
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.0.0.105:11211,n2:10.0.0.106:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context> #此行是最后一行 [root@jpress2 ~]# systemctl restart memcached.service
[root@jpress2 ~]# systemctl restart tomcat.service
3、创建数据库
#数据库服务器(10.0.0.104):
[root@mysql ~]#vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
default_authentication_plugin=mysql_native_password #增加此行 #bind-address = 127.0.0.1 #注释掉
#mysqlx-bind-address = 127.0.0.1 #注释掉 [root@mysql ~]#systemctl restart mysql.service
# 客户端连接数据库
4、Nginx配置
[root@nginx ~]#mkdir /apps/nginx/ssl
[root@nginx ~]#cd /apps/nginx/ssl
[root@nginx ssl]#openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 2650 -out ca.crt
[root@nginx ssl]#openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.wang.org.key -out www.wang.org.csr
[root@nginx ssl]#openssl x509 -req -days 3650 -in www.wang.org.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.wang.org.crt
[root@nginx ssl]#cat www.wang.org.crt ca.crt > www.wang.org.pem
[root@nginx ssl]#cd
[root@nginx ~]#vim /apps/nginx/conf/conf.d/wang.org.conf
upstream jpress {
server n1.wang.org:8080;
server n2.wang.org:8080;
}
server {
listen 80;
server_name jpress.wang.org;
# location / {
# proxy_pass http://jpress;
# proxy_set_header host $http_host;
#
# }
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name jpress.wang.org;
ssl_certificate /apps/nginx/ssl/www.wang.org.pem;
ssl_certificate_key /apps/nginx/ssl/www.wang.org.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
location / {
proxy_pass http://jpress;
proxy_set_header host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
} [root@nginx ~]#vim /etc/hosts
10.0.0.101 jpress.wang.org
10.0.0.105 n1.wang.org
10.0.0.106 n2.wang.org [root@nginx ~]#nginx -s reload
5、安装Memcached保持会话
# 10.0.0.104、10.0.0.105:
[root@ubuntu2004 jpress]#apt install memcached -y
[root@ubuntu2004 jpress]#vim /etc/memcached.conf
-m 1000 #内存改为1000M,建议改为物理机内存的1/4---1/2
-l 0.0.0.0 #需改监听所有ip
[root@ubuntu2004 jpress]#systemctl restart memcached.service
6、客户端测试

三、利用Nginx反向代理部署博客系统Halo

1、环境准备
服务器 IP地址 作用 系统版本
Proxy代理服务器 10.0.0.101 负载均衡Nginx Web服务器 Ubuntu2004
halo服务器 10.0.0.102 博客服务器1 Ubuntu2004
halo服务器 10.0.0.103 博客服务器2 Ubuntu2004
数据库+NFS服务器 10.0.0.104 数据库服务器+NFS服务器 Ubuntu2004
client 测试访问网站 Windows
#数据库服务器(10.0.0.104):
mysql> create database halodb character set utf8mb4 collate utf8mb4_bin;
mysql> create user halo@'10.0.0.%' identified by '123456';
mysql> grant all on halo.* to halo@'10.0.0.%';
mysql> flush privileges;
2、安装halo
# halo服务器(10.0.0.102、10.0.0.103):
[root@halo-server1 ~]#apt -y install openjdk-11-jdk #halo支持openjdk11以上,不推荐 Oracle 版本
[root@halo-server1 ~]#java -version
openjdk version "11.0.16" 2022-07-19
[root@halo-server1 ~]#useradd -m halo
[root@halo-server1 ~]#vim /etc/sudoers #增加sudo权限
halo ALL=(root) NOPASSWD: ALL
[root@halo-server1 ~]#passwd halo
[root@halo-server1 ~]#su - halo
[halo@halo-server1 ~]$mkdir ~/app
[halo@halo-server1 ~]$cd ~/app
[halo@halo-server1 app]$wget https://dl.halo.run/release/halo-1.5.4.jar -O halo.jar #下载并改名为halo.jar
[halo@halo-server1 app]$wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml #下载配置文件模板
[halo@halo-server1 app]$cd halo
[halo@halo-server1 halo]$vim application.yaml
server:
port: 8090 # Response data gzip.
compression:
enabled: true
#spring:
#datasource:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
#填写正确的数据库ip地址和用户名密码
url: jdbc:mysql://10.0.0.104:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: halo
password: 123456
...
halo: # Your admin client path is https://your-domain/{admin-path}
admin-path: admin # memory or level
cache: memory [halo@halo-server1 halo]$exit # 以下操作需要退回root用户操作
#下载service模板
[root@halo-server1 app]#wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
[root@halo-server1 app]#vim /etc/systemd/system/halo.service
[Unit]
Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target [Service]
Type=simple
User=halo #需改为运行halo的用户
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /home/halo/app/halo.jar #需改为halo.jar的绝对路径
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog StandError=inherit [Install]
WantedBy=multi-user.target [root@halo-server1 app]#systemctl daemon-reload
[root@halo-server1 app]#systemctl restart halo.service
[root@halo-server1 app]#systemctl status halo.service
[root@halo-server1 app]#journalctl -n 20 -u halo #如果启动有问题,用这条命令查看日志排查

3、客户端测试连接
#浏览器输入http://10.0.0.103:8090   #这里的IP地址就是安装halo的服务器地址

4、配置NFS服务端
#NFS服务器设置(10.0.0.104):
[root@mysql ~]#apt install -y nfs-server
[root@mysql ~]#mkdir /data/halo -p
[root@mysql ~]#useradd -u 1001 halo #创建一个和客户端halo同ID的用户
[root@mysql ~]#chown halo. /data/halo
[root@mysql ~]#vim /etc/exports
/data/halo 10.0.0.0/24(rw,all_squash,anonuid=1001,anongid=1001) [root@mysql ~]#exportfs -r
[root@mysql ~]#exportfs -v

5、挂载NFS
# nfs客户端设置(10.0.0.102、10.0.0.103):
[root@halo-server1 app]#rsync -av app/* root@10.0.0.104:/data/halo/ #先拷贝一份到nfs服务器保留属性
[root@halo-server1 ~]#apt install -y nfs-common
[root@halo-server1 ~]#vim /etc/fstab
10.0.0.104:/data/halo /home/halo/app/ nfs _netdev 0 0
[root@halo-server1 ~]#mount -a
[root@halo-server1 ~]#systemctl restart halo.service
6、Nginx反向代理
[root@nginx ssl]#vim /apps/nginx/conf/conf.d/halo.wang.org.conf
upstream halo {
hash $remote_addr;
server 10.0.0.102:8090;
server 10.0.0.103:8090;
}
server {
listen 80;
server_name halo.wang.org;
client_max_body_size 1024m;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name halo.wang.org;
ssl_certificate /apps/nginx/ssl/www.wang.org.pem;
ssl_certificate_key /apps/nginx/ssl/www.wang.org.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
7、客户端访问测试

Nginx反向代理实现Tomcat+Jpress和halo的更多相关文章

  1. Nginx反向代理实现Tomcat负载均衡

    这篇短文主要介绍Tomcat的集群和用Nginx反向代理实现Tomcat负载均衡. 1.首先需要对一些知识点进行扫盲(对自己进行扫盲,囧): 集群(Cluster) 简单来说就是用N台服务器构成一个松 ...

  2. nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决

    Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意:今天遇到了这样一个问题,tomcat中路径“host/web1”,nginx中直接“host/”代理,这时候session就无法 ...

  3. Nginx反向代理实现Tomcat多个应用80端口访问

    应用背景 一般我们在开发时,一个工程里会有多个Web应用,比如一个前台一个后台,那我们就需要配置2个Tomcat服务器,比如一个是http://localhost:8080,一个是http://loc ...

  4. 【转】Nginx反向代理转发tomcat

    http://blog.csdn.net/mlc1218559742/article/details/53117520 最近刚接触nginx,在网上查阅了相关资料,看到最多的形容nginx的词就是反向 ...

  5. Nginx反向代理到Tomcat服务器

    在实际生产中,Tomcat服务器一般不单独使用在项目中,对于静态资源的响应Nginx表现的比较好,另外由于nginx是专门用于反向代理的服务器,所以很容易实现将java的请求转发到后端交给tomcat ...

  6. Nginx反向代理时tomcat日志获取真实IP

    对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如 ...

  7. 腾讯云Centos下Nginx反向代理Apache+Tomcat

    1. 安装Apahce, PHP, MySQL以及php连接mysql库的组件#yum -y install httpd php mysql mysql-server php-mysql     // ...

  8. Nginx之搭建反向代理实现tomcat分布式集群

    参考博文: Nginx反向代理实现Tomcat分布式集群 1. jdk 安装 jdk 下载网址: http://www.oracle.com/technetwork/java/javase/downl ...

  9. nginx反向代理tomcat访问时浏览器加载失败,出现 ERR_CONTENT_LENGTH_MISMATCH 问题

    问题说明:测试机上部署了一套业务环境,nginx反向代理tomcat,在访问时长时间处于加载中,十分缓慢! 通过浏览器调试(F12键->Console),发现有错误ERR_CONTENT_LEN ...

随机推荐

  1. 微服务性能分析|Pyroscope 在 Rainbond 上的实践分享

    随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...

  2. 腾讯云服务器安装rabbitmq及简单测试记录

    一.安装 近期对消息队列的学习让我对消息中间件产生了兴趣,而作为消息队列的使用的rabbitmq,就是我学习中间件的第一步. rabbitmq和erlang的安装 安装之前先检查环境: [root@V ...

  3. 论文解读(SEP)《Structural Entropy Guided Graph Hierarchical Pooling》

    论文信息 论文标题:Structural Entropy Guided Graph Hierarchical Pooling论文作者:Junran Wu, Xueyuan Chen, Ke Xu, S ...

  4. Node.js + Express + Knex 开发 API 接口

    安装依赖包 npm i express knex mysql2 这是 Knex 官方文档地址:Knex.js - SQL query builder. 搭建接口 config.js 新建一个 conf ...

  5. js实现多条件排序

    1.sort排序允许接受一个参数(函数),这个函数接受2个形参a,b,并且通过冒泡的方式比较.例子:Arr.sort((a,b) => a-b);   升序排列Arr.sort((a,b) =& ...

  6. gem5 使用记录, 基于理解来写个最简单的计数器程序

    学习GEM5其实是因为工作需要,主要是用来做数字电路的模型仿真的,之前用过 systemC,现在公司用的 gem5,其实本质上都是 C++只是套个不同的壳然后拿去仿真而已,SC本身就提供了时钟可以仿真 ...

  7. http服务(postman调用方法及反参)

    #region 监听url #region 监听url路径请求 static HttpListener httpobj; private void listeningUrl() { //提供一个简单的 ...

  8. WSUS下载速度和BITS服务

    近日,新装了一台WSUS服务器.选择好需要同步的补丁类型和语言版本后开始等待同步.通过过程异常缓慢,速度一直上不去.同步了一整天才30G,同步3T数据需要100天.这样肯定没办法用,所以要想办法提高下 ...

  9. [GWCTF 2019]我有一个数据库 WP

    打开环境访问看到 提示我有一个数据库,但里面什么都没有,于是拿dirsearch跑了一下,没有出结果 但是有数据库嘛,那么试试常见的几个加上phpmyadmin 试试 于是看到了版本是4.8.1 拿到 ...

  10. 我的 Kafka 旅程 - Linux下的安装 & 基础命令

    准备工作 安装解压缩工具 tar # 检查是否安装了解压缩工具 tar yum list tar # 如未安装 tar yum install tar -y 安装必备的 java # 检查是否安装了 ...