一、利用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. 慢SQL,压垮团队的最后一根稻草!

    一.什么是慢 SQL 什么是慢SQL?顾名思义,运行时间较长的 SQL 语句即为慢 SQL! 那问题来了,多久才算慢呢? 这个慢其实是一个相对值,不同的业务场景下,标准要求是不一样的. 我们都知道,我 ...

  2. java-分支重载以及构造方法

    1:方法的签名: 方法名+参数列表就是一个方法的签名 2.方法的重载(Overload): 1)发生在同一个类中,方法名称相同,参数列表不同 2)编译器在编译时会根据方法的签名自动绑定方法 3.构造方 ...

  3. mybatis 15: 缓存

    作用 当对某些数据的查询请求频繁,且数据不经常修改时,使用缓存机制可以提高查询效率 注意 mybatis专注于sql查询,数据映射 缓存问题应该交给专门负责缓存的其他第三方框架 mybatis缓存执行 ...

  4. 论文解读(NWR)《Graph Auto-Encoder via Neighborhood Wasserstein Reconstruction》

    论文信息 论文标题:Graph Auto-Encoder via Neighborhood Wasserstein Reconstruction论文作者:Shaked Brody, Uri Alon, ...

  5. Express 使用 Cookie

    在使用 Cookie 之前,需要给 Express 加载中间件,cookie-parser: npm i cookie-parser Express 使用中间件: import express fro ...

  6. QPainter. QpaintDevice 绘图设备

    QPaintDevice 绘图设备 1 QPixmap QImage Qbitmap(黑白色) QPicture QWidget 2 QPixmap 对不同平台做了显示优化  fill(填充颜色) Q ...

  7. [SDR] GNU Radio 系列教程(二) —— 绘制第一个信号分析流程图

    目录 1.前言 2.启动 GNU Radio 3.新增块 4.运行 本文视频 参考链接 1.前言 本文将介绍如何在 GNU Radio 中创建和运行第一个流程图. 2.启动 GNU Radio GNU ...

  8. GIN 索引

    GIN(Generalized Inverted Index, 通用倒排索引) 是一个存储对(key, posting list)集合的索引结构,其中key是一个键值,而posting list 是一 ...

  9. gem5使用记录,gem5入门学习和环境配置。

    工作需要,对gem5有点兴趣,准备自己研究一下,gem5新手刚开始入门学习,主要参考了网上其他前人的文章和官方说明. 目前网上的前人文章有部分有点太早了,稍显过时,我结合自己的经历来整理一下流程. g ...

  10. vue简单的请求api并渲染到表格

    环境 vue3.11 组件库 https://element-plus.gitee.io/#/zh-CN 开始 初始化一个项目 App.vue <template> <div> ...