nginx java项目的无缝更新 证书 还有很多基础知识

nginx 应该很熟悉了 所以用到 nginx的可视化界面 docker web ui
官方的文档 : https://gitee.com/cym1102/nginxWebUI#%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E
jdk 什么的安装声明不在这说了 文档里都有的

1.安装web ui (官网代码)

1.安装docker容器环境

apt install docker.io

2.拉去镜像

docker pull cym1102/nginxwebui:latest

3.启动容器

docker run -itd -v /home/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--server.port=8080" --privileged=true --net=host  cym1102/nginxwebui:latest /bin/bash

注意:
1.启动容器时请使用–net=host参数, 直接映射本机端口, 因为内部nginx可能使用任意一个端口, 所以必须映射本机所有端口.
2.容器需要映射路径/home/nginxWebUI:/home/nginxWebUI, 此路径下存放项目所有数据文件, 包括数据库, nginx配置文件, 日志, 证书等, 升级镜像时, 此目录可保证项目数据不丢失. 请注意备份.
3.-e BOOT_OPTIONS 参数可填充java启动参数, 可以靠此项参数修改端口号
–server.port 占用端口, 不填默认以8080端口启动
4.日志默认存放在/home/nginxWebUI/log/nginxWebUI.log

2.编译说明

1.使用maven编译打包

mvn clean package

2.使用docker构建镜像

docker build -t nginxwebui:2.6.8 .

3.打开 http://xxx.xxx.xxx.xxx:8080 进入主页

3.反向代理

在这里插入图片描述

4.负载均衡

在这里插入图片描述
最主要的来了
首先是付赞均衡的策略
文档链接:https://www.cnblogs.com/1214804270hacker/p/9325150.html

1.轮询

1.ail_timeout 与max_fails结合使用。
2.max_fails
3.设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了,
4.fail_time 服务器会被认为停机的时间长度,默认为10s。
backup 标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
5.down 标记服务器永久停机了。
注意:
在轮询中,如果服务器down掉了,会自动剔除该服务器。
缺省配置就是轮询策略。
此策略适合服务器配置相当,无状态且短平快的服务使用

2.weight
3.ip_hash
4.least_conn

把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

#动态服务器组
    upstream dynamic_zuoyu {
        least_conn;    #把请求转发给连接数较少的后端服务器
        server localhost:8080   weight=2;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082 backup;  #tomcat 8.5
        server localhost:8083   max_fails=3 fail_timeout=20s;  #tomcat 9.0
    }

我们使用轮询策略 目的是我在更新一个端口的服务时候另一个还在正常被访问 用户感知不到更新 所以叫无缝更新

我们知道了轮询
fail_timeout=30s; max_fails=3;
有两个端口 88 和 99
当我们三十秒之内 有访问88是失败的 (404)! nginx就会认为这个服务是停止的 他就会访问一直去访问99端口 之后的每30秒都会尝试请求一下88 当我把88端口服务器重启后 就会正常的去轮询了
但是这样还不够 因为在nginx中 404 不是失败
所以这时候我们就应该配置 让nginx访问404时候认为也是失败的
在这里插入图片描述

proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

在lockhost / {
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
}
这样就做到了无缝更新咱的java项目了

4.nginx 证书

登录阿里云
https://yundun.console.aliyun.com/?spm=5176.6660585.774526198.1.65166bf8905YmP&
创建完免费证书后 会下载.pem / .key 文件
在niginx web ui 会有证书管理 点击添加证书 将两个文件上传

在这里插入图片描述接下来配置conf 文件 监听443 端口做负载均衡

在这里插入图片描述在这里插入图片描述
设置额外参数 告诉nginx 证书位置
在这里插入图片描述在设置负载均衡就好
在这里插入图片描述
最后生成的配置文件

load_module /usr/lib/nginx/modules/ngx_stream_module.so;
worker_processes auto;
pid /home/nginxWebUI/nginx.pid;
events {
    worker_connections  1024;
    accept_mutex on;
  }
http {
  include mime.types;
  default_type application/octet-stream;
  upstream data {
    server xxx:8081 weight=1 fail_timeout=10s max_fails=1 ; #权重为1 10 秒内有一次错误就算失效 下个十秒回尝试访问  如访问成功 负载均衡回复正常
    server xxx:8848 weight=1 fail_timeout=10s max_fails=1 ;
  }
  upstream test {
    server xxx:9999 weight=1 fail_timeout=30s max_fails=3 ;#权重为1 30 秒内有三次错误就算失效 
    server xxx:8848 weight=1 fail_timeout=30s max_fails=3 ;
  }
  server {
    listen 443 ssl;  # 443端口 
    server_name xxx.com; #域名地址
    ssl_certificate xxx.pem; # 证书 .pem文件 地址
    ssl_certificate_key xxx.key; # 证书 .key文件 地址
    location / {
      proxy_pass http://data; #负载均衡
      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_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
      # 当访问接口时出现这几个返回值 则算一次访问失败
    }
  }
  server {
    listen 8080;
    location / {
      proxy_pass http://test;
      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_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
    }
  }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是一种轻量级的Web服务器和反向代理服务器。它可以用于部署JavaWeb项目。以下是部署JavaWeb项目的步骤: 1. 首先,你需要安装Nginx。你可以通过以下命令来安装Nginx: ``` cd /usr/local/source wget http://nginx.org/download/nginx-1.9.0.tar.gz tar -zxvf nginx-1.9.0.tar.gz cd nginx-1.9.0 ./configure make make install ``` 安装完成后,你可以使用`nginx -v`命令来检查Nginx的版本。 2. 接下来,你需要配置Nginx来部署JavaWeb项目。你可以通过编辑Nginx配置文件来实现。配置文件通常位于`/usr/local/nginx/conf/nginx.conf`。你可以使用文本编辑器打开该文件。 3. 在配置文件中,你需要设置Nginx监听的端口号和服务器名称。你可以使用以下语法来设置监听端口和服务器名称: ``` server { listen 80; server_name your_domain.com; } ``` 4. 然后,你需要配置Nginx反向代理JavaWeb项目。你可以使用以下语法来设置反向代理: ``` location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } ``` 在上面的例子中,我们假设JavaWeb项目运行在本地的8080端口上。你可以根据实际情况进行相应的更改。 5. 配置完成后,保存并退出配置文件。然后,你可以使用以下命令重启Nginx以使配置生效: ``` nginx -s reload ``` 现在,你的JavaWeb项目就可以通过Nginx来访问了。你可以使用IP地址或域名来访问部署的项目页面。请确保你的JavaWeb项目在指定的端口上正在运行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值