当前位置: 首页 > news >正文

做网站备案的问题/信息流优化师怎么入行

做网站备案的问题,信息流优化师怎么入行,2008系统怎么做网站,wordpress识别环境的文件夹Nginx 配置反向代理和负载均衡 前言 这段时间在重新搞自己阿里云服务器上的博客,想着使用docker来搞一下方便后期“移植”,所以也顺带玩了一下nginx(我自己服务器实际上是用不到nginx的,只是这里纯属放假因为疫情出不去没事干搞着…

Nginx 配置反向代理和负载均衡

前言

这段时间在重新搞自己阿里云服务器上的博客,想着使用docker来搞一下方便后期“移植”,所以也顺带玩了一下nginx(我自己服务器实际上是用不到nginx的,只是这里纯属放假因为疫情出不去没事干搞着玩。。。)

摘要

本文主要内容

1 docker下安装nginx、配置nginx挂载;

2 nginx 配置反向代理

3 nginx 配置负载均衡

4 nginx 一些原理参数理解。

注意:

1 本文不再复述docker的安装和配置等。详情请参考 Docker的安装配置以及IDEA的Docker插件使用

2 本文记录内容基于centos7系统进行操作

1 docker下安装配置nginx

基于上一篇关于docker 的文章已经介绍过了相关镜像的拉取和容器的创建运行,这里会相对比较简单的介绍,只对nginx的挂在做详细记录

1.2 nginx的安装

nginx的镜像拉取请参考摘要中链接

1.3 nginx创建挂载

docker安装的nginx有一个缺点就是我们后期想要更改配置比较麻烦,因为docker创建的nginx目录比较深 盖起来相当麻烦

如下图

在这里插入图片描述

为了后期更改方便我们一般需要给nginx创建挂载

挂载其实就是将nginx目录中的配置文件日志文件等映射出来,我们只需要更改映射出来的文件就会同步刷新docker中的nginx配置

1.3.1 创建映射目录

注意:

如果你使用的是最新版的nginx你的映目录中必须得有一个conf.d目录,因为在这个目录中有一个default.conf文件是我们后期配置的主要文件

# nginx.conf 文件映射目录
mkdir -p /docker/nginx_master/data/nginx/conf
# default.conf 文件映射目录
mkdir -p /docker/nginx_master/data/nginx/conf.d
# 日志文件映射目录
mkdir -p /docker/nginx_master/data/nginx/log
# html静态文件等映射目录
mkdir -p /docker/nginx_master/data/nginx/html

1.3.2 映射目录中创建对应文件

1.3.1步骤中已经创建了挂载目录接下来为每一个挂载目录中创建对应的挂载文件(log中除外)

建议:

我们最好先创建一个nginx容器并找到该容其中指定目录的文件复制到我们的挂载目录中,这样能够避免不同版本的nginx出现问题。(我就是采用的这种方式),html 和 log 中的文件不需要复制,因为这些文件相对来说不那么重要。

find . -name nginx.conf
find . -name default.conf

在这里插入图片描述

在这里插入图片描述

/docker/nginx_master/data/nginx/conf/nginx.conf 内容如下

user  nginx;# 全局块 处理并发数的配置 worker 数和服务器的 cpu 数相等是最为适宜的
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;# 影响nginx服务器与用户的网络连接数
events {worker_connections  1024; # 支持最大的连接数为1024
}# http块
http {include       /etc/nginx/mime.types;default_type  application/octet-stream;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;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;

/docker/nginx_master/data/nginx/conf.d/default.conf 内容如下

# server块
server {listen       80; # 监听端口server_name  localhost; # nginx服务器地址#access_log  /var/log/nginx/host.access.log  main;location / {root   /usr/share/nginx/html;index index.html index.htm;}#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   /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}
}

/docker/nginx_master/data/nginx/html/index.html 内容如下

<!DOCCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<h2> Hello Nginx!!! </h2>
</body>
</html>

1.3.3 创建挂载并启动nginx容器

注意:

不要换行, 最后的nginx是nginx镜像

docker run --name nginx-container -d -p 80:80 -v /docker/nginx_master/data/nginx/log:/var/log/nginx -v /docker/nginx_master/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx_master/data/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx_master/data/nginx/html:/usr/share/nginx/html nginx

执行后查看容器启动状态如下

在这里插入图片描述

设置容器自启,并重启容器

docker update --restart=always nginx-container
docker restart nginx-container

1.3.4 验证是不是挂载成功

我们之前已经创建了一个html文件,如果挂载成功我们访问nginx会自动访问我们创建的index.html文件,并且我们的log目录中一定会有日志文件生成

在这里插入图片描述

在这里插入图片描述

2 nginx配置反向代理

nginx配置反向代理可能的前段开发者经常遇到的问题,特别是前后端分离的情况下,一般会在前段服务器中利用nginx配置反向代理来解决跨域问题。接下来我们通过两台虚拟机来简单演示一下反向代理的配置。

现在假定目前使用的虚拟机为master虚拟机 IP:192.168.50.130

我们先在master虚拟机中安装在拉取一个tomcat的镜像创建并运行容器,启动tomcat

并在地址栏中输入192.168.50.130:8080查看页面效果看是否安装成功;

在这里插入图片描述

2.1 解决不能访问tomcat的问题

如果浏览器中输入ip和端口没有出现tomcat页面,你需要考虑以下几点问题:

1 8080端口是否放行

2 容器是否启动成功

3 webapps目录下是否存在默认的tomcat页面

第一二问题请参考前言中链接自行解决.

接下来简单解决一下第三种情况:

首先进入到tomcat容器内部

docker exec -it [容器Id或者容器名] /bin/bash

在这里插入图片描述

查看webapps中是否存在文件和文件夹等

我这里已经存在了:因为我已经解决过了

在这里插入图片描述

如果没有我们的解决办法:

首先军入到webapps目录内部 然后将webapps.dist目录中的内容copy进来即可

cp -r ../webapps.dist/* ./

在这里插入图片描述

重启tomcat容器再次访问即可.

2.2 反向代理正式配置

注意:

配置中先不去介绍每一块到底有什么作用,毕竟不是运维人员,不需要了解这么深入,但是后面我会单独列出一个章节简单介绍一些nginx的配置文件中的一些代码块的作用和原理

master虚拟机上面nginx和tomcat都已经安装完毕并运行起来了,那么我们只需要复制一个master虚拟机重新命名为backup这样就有了两台一模一样的虚拟机,我们就不需要麻烦再去创建一个新的虚拟机了.

这里的backup 虚拟机的IP为:192.168.50.131

我们访问192.168.50.131:8080 同样可以看到tomcat正常访问.

在这里插入图片描述

2.2.1 配置访问master跳转到backup的tomcat

先来简单配置一个反向代理的实例,我们配置在地址栏输入

http://192.168.50.130 直接访问backup虚拟机的tomcat

这里的配置我直接使用 FileZilla Client 这款工具直接修改配置文件

我们在default.conf配置文件中修改内容如下:

# server块
server {listen       80; # 监听端口server_name  192.168.50.130; # nginx服务器地址location / {proxy_pass http://192.168.50.131:8080;# root   /usr/share/nginx/html;# index index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}    
}

保存后重启nginx容器访问 http://192.168.50.130 看效果如下

可以看到我们访问master服务器的ip地址,直接跳转到了backup的tomcat中

在这里插入图片描述

2.2.2 反向代理配置正则匹配到不同的服务器上

我们通过配置nginx的匹配路径实现,用户输入不同的url后缀跳转到不同的服务器上.

例如:

访问 http://192.168.50.130/test131/131.html 反向代理到backup服务器上的131.html

访问 http://192.168.50.130/130test/130.html 反向代理到master服务器上的130.html

首先我们需要先在master服务器和backup服务器上的tomcat中分别创建html文件

如何在tomcat容器中创建文件就不再详述了 因为重点不是这里,自己想办法解决,你可以先找到tomcat容器的webapps目录,然后进行创建.

master中创建/130test/130.html 内容如下

<h1>192.168.50.130 tomcat running !!! <h1/>

backup中创建/test131/131.html 内容如下

<h1>192.168.50.131 tomcat running !!!<h1/>

修改default.conf配置文件如下

[~ /xxx/] 这种路径配置就是正则,nginx会根据你输入的路径中是否包含此内容来匹配要代理到哪一个服务器

# server块
server {listen       80; # 监听端口server_name  192.168.50.130; # nginx服务器地址#access_log  /var/log/nginx/host.access.log  main;location / {# proxy_pass http://192.168.50.131:8080;root   /usr/share/nginx/html;index index.html index.htm;}##### 这里测试反向代理###### 正则匹配backup路径的请求location ~ /test131/ {# 代理到指定服务器地址和端口(这里的地址另一个虚拟机中的tomcat)proxy_pass http://192.168.50.131:8080;}# 正则匹配master路径的请求location ~ /130test/ {# 代理到指定服务器地址和端口(这里的地址是本机tomcat)proxy_pass http://192.168.50.130:8080;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}

重启nginx容器 分别访问如下路径查看效果:

http://192.168.50.130/test131/131.html

http://192.168.50.130/130test/130.html

在这里插入图片描述

在这里插入图片描述

3 nginx 配置负载均衡

负载均衡能有效解决微服务下多台服务器压力过大问题.这也是我们使用nginx很重要的一个原因.

我们在nginx.conf中直接配置如下内容:

其中upstream 就是负载代码块 myserver 随便命名只要不冲突即可,

可以看到负载均衡又下面四种策略,每一种策略都需要使用者根据不同需求而定

user  nginx;# 全局块 处理并发数的配置 worker 数和服务器的 cpu 数相等是最为适宜的
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;# 影响nginx服务器与用户的网络连接数
events {worker_connections  1024; # 支持最大的连接数为1024
}# http块
http {include       /etc/nginx/mime.types;default_type  application/octet-stream;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;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;# 配置负载均衡 方案一:轮询 (一个接一个访问)upstream myserver{server 192.168.50.130:8080;server 192.168.50.131:8080;}# 配置负载均衡 方案二:weight (权重 数值越大,访问的频率越大) # upstream myserver{#     server 192.168.50.130:8080 weight=10;#     server 192.168.50.131:8080 weight=5;# }# 配置负载均衡 方案三:ip_hash (哈希 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题) # upstream myserver{#     ip_hash;#     server 192.168.50.130:8080;#     server 192.168.50.131:8080;# }# 配置负载均衡 方案四:fair (第三方 按后端服务器的响应时间来分配请求,响应时间短的优先分配) # upstream myserver{#     fair;#     server 192.168.50.130:8080;#     server 192.168.50.131:8080;# }include /etc/nginx/conf.d/*.conf;
}

在default.conf配置文件中配置

# server块
server {listen       80; # 监听端口server_name  192.168.50.130; # nginx服务器地址location / {# proxy_pass http://192.168.50.131:8080;proxy_pass http://myserver;root   /usr/share/nginx/html;index index.html index.htm;}##### 这里测试反向代理###### 正则匹配backup01路径的请求# location ~ /test131/ {#     # 代理到指定服务器地址和端口(这里的地址另一个虚拟机中的tomcat)#     proxy_pass http://192.168.50.131:8080;# }# 正则匹配master路径的请求# location ~ /130test/ {#     # 代理到指定服务器地址和端口(这里的地址是本机tomcat)#     proxy_pass http://192.168.50.130:8080;# }error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}

注意这里省略了一些东西:

我已经在master 和 backup 服务器的tomcat中都创建了名为 /test131/131.html的文件

如果你没有创建可以参考上面个方式自行创建这里不再复述

重启nginx容器多次访问如下地址查看效果:

可以看到确实如上面配置使用了轮询的方式访问不同的服务器.

http://192.168.50.130/test131/131.html

在这里插入图片描述

在这里插入图片描述

其他几种方式不再演示,至此负载均衡的配置原理也已经结束.

4 nginx的一些代码块和原理记录

经过上面配置我们已经配置了反向代理和负载均衡,当然还有一些动静分离 以及高可用 没有进行配置.

这里简单介绍一下nginx配置文件中一些关键字的作用和原理

4.1 master 和 worker

# 我们在nginx.conf 配置文件中可以看到worker_processes  auto; #全局块 处理并发数的配置 worker 数和服务器的 cpu 数相等是最为合适# nginx是基于master 和 worker 机制运行的
# 也就是nginx中的master进程下有很多worker进程,这些worker进程相互独立,当一个worker中断了不会影响其他worker进程的运行工作.

4.2 worker_connections

#影响nginx服务器与用户的网络连接数
events {worker_connections  1024; # 支持最大的连接数为1024 表示每个 worker 进程所能建立连接的最大值
}

4.3 如何计算最大并发数

第一个:发送请求,占用了 woker 的几个连接数?
答案:2 或者 4 个
这是因为如果访问的静态资源nginx访问之后会直接展示了,不会返回给代理服务器所以是2个,
如果反向代理访问的动态资源资源服务器还需要建立连接返回给代理服务器响应数据所以是4个第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的
最大并发数是多少?普通的静态访问最大并发数是: worker_connections * worker_processes /2,而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4

5 结束语

本次简单记录一些自己这两天闲着没事干在家搞自己阿里云服务器时 查阅资料时整理的一些笔记

当然nginx的功能远远不止这些,你还可配置nginx动静分离nginx高可用以及配置防盗链,URL过滤等骚操作,

因为时间原因这里没有去配置这些东西,网上资料一大堆,这里后期有时间再完善吧…

目前个人博客已经使用docker进行部署,后期有什么问题再进行修改吧…emo…

好了 就这些吧 …

http://www.lbrq.cn/news/731323.html

相关文章:

  • 凡客诚品售后/郑州官网网站优化公司
  • 重庆网站推广营销/网站开发框架
  • 优秀个人网站推荐/营销推广是什么意思
  • 可以做营销任务的网站/阿里数据
  • 个人备案转企业网站期间/武汉seo首页优化报价
  • 专业彩票网站开发/西安百度公司官网
  • 哪里有网站制作平台/seo如何优化关键词
  • 郑州网站建设公司qq/网站优化排名软件哪些最好
  • 1网站建设/企业网站建设费用
  • 建设部职称网站/谷歌seo零基础教程
  • 佛山出格建站/百度seo排名点击器
  • 购物网站开发需求分析/在线客服系统平台有哪些
  • 临朐网站建设价格/在百度上怎么注册网站
  • 高端网站建设企业/网站联盟推广
  • 东莞网站建设牛魔网a/广东省最新疫情
  • 河北软件开发网站建设/朋友圈广告
  • 成都网站建设公司电话/市场调查报告
  • 品牌vi设计理念/谷歌seo排名公司
  • 蓬莱做网站价格/seo中介平台
  • 荔湾做网站的公/今日要闻新闻
  • 做p2p理财网站/代写平台在哪找
  • 众筹平台网站搭建/12月10日新闻
  • 中象做网站怎么样/广告推广
  • 中国供应商网app下载/网络优化排名培训
  • 电商类网站建设需要多少钱/丁香人才网官方网站
  • 潍坊公司做网站/长沙seo霜天
  • 老河口网站设计/在百度怎么免费发布广告
  • 网站标题切换/百度指数购买
  • 微信怎么自己创建公众号/重庆seo海洋qq
  • 微信网站建设和维护/广州网站优化公司排名
  • HTML5详篇
  • ZKmall模块商城的跨境电商支付安全方案:加密与权限的双重防护
  • vue vxe-gantt 甘特图自定义任务条样式模板 table 自定义插槽模板
  • postman接口自动化测试
  • 使用Docker部署Coze Studio开源版
  • PyTorch API 7