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

Windows 服务器Nginx 下载、部署、配置流程(图文教程)

不定期更新

目录

一、下载Nginx安装包

二、上传安装包

三、启动Nginx

四、Nginx常用命令

五、Nginx(最小)配置详解

 六、Nginx(基础)配置详解

七、反向代理

八、负载均衡

九、动静分离

十、报错


 

一、下载Nginx安装包

四个网址,根据自己的情况选择,我是用Nginx开源版的。

1、下载网址

1)Nginx开源版

nginx newshttp://nginx.org/

2)Openresty

OpenResty® - 开源官方站https://openresty.org/cn/

3)Tengine

Tengine Web 服务器 (taobao.org)https://tengine.taobao.org/

4)Nginx plus 商业版(收费)

F5 | 多云安全和应用交付https://www.f5.com.cn/

2、下载

在Nginx开源版选择对应系统下载nginx安装包

20fbb724ad794a769dbb9d9497db6e49.png

e5d7d92c0ed44fdfafddd4974071b387.png

二、上传安装包

将下载的Nginx安装包上传到Windows虚拟机中并解压到想安装的路径,我就直接在桌面操作了

如果没有Windows Server 虚拟机的,可以看一下这一篇安装一个。
VMware Windows Server 虚拟机安装 详细教程_vmware安装windows server-CSDN博客https://blog.csdn.net/weixin_68547003/article/details/135177616
常用目录结构
1、 conf
存放相关配置文件
2、html
存放静态文件的默认目录 html、css等
3、logs
存放Nginx相关日志

9e898ede4447453aa42a8b5c636a1466.png

三、启动Nginx

1、双击nginx.exe启动

双击后窗口会一闪而过。b41c394d120b4d8fa2f8979e86dae4e5.png

2、查看是否启动成功

77712dbe4ba6434f8d41735b4a82bde1.png

13ec53cbdf424891a39c64d0624087b3.png

3、访问默认页面确认

先查看服务器ip

dac4036241ea416b81c534a1ede0c734.png

5034d3fc285440efb4adea1e1f5df8a3.png

2613001b9222465b90b7a1bb9e583661.png

打开服务器浏览器访问ip地址,默认端口是80,可以不用写。直访问ip,出现下图界面,则表示已经成功启动。

ccbd552ac4c94bf48433f43c20726253.png

4、防火墙配置

在自己电脑访问,要么关闭防火墙,要么开通80端口访问权限,下面是允许通过80端口权限添加操作流程,后面增加端口也是这么配置的相对应的策略。

baf0527c11574fb18045a4e18268c4ab.png

也可以通过控制面板→系统和安全→Windows防火墙→高级设置流程。

4c2ee324898c4c74ae9f660608d2ef48.png

添加入站规则

86b0f254c57e44c0a3096301d152af1e.png

允许通过80端口访问

cf6db22b5d494f889b773be2e6602cec.png

ea6db3072fc0464fa20073b602e2e17d.png

1e8d125e7d4b4346b8ec354ab0317181.png

4c520c9c97e84875acbc5be1aa635e1f.png

添加完成后,在自己电脑访问服务器ip,出现下图界面表示成功。

d0877758c6c34dfba515bee88fc3a59a.png

 

四、Nginx常用命令

Nginx常用命令
命令说明
start nginx 启动nginx
nginx -s stop停用Nginx
nginx -s quit 停用Nginx(处理完正在进行中请求后停用)
nginx -t验证新的配置是否正确
nginx -s reload重新加载配置,并重启进程
nginx -s reopen重启日志文件
nginx -h查看帮助信息
nginx -v查看Nginx版本
taskkill /f /t /im nginx.exe彻底关闭nginx(关闭nginx其他服务,这样才能彻底关闭)

 

 

 

 

 

 

 

 

 

 

 

 

演示:

在nginx文件夹上的路径直接输入cmd然后回车,打开命令窗口,或者通过其他方法打开命令窗口,然后到nginx文件夹路径下

3efad193846f4f27bff76d2c4f076ca0.png
   ee61711fa8404005b9f36fe4007aa5b1.png

命令启动并查看版本信息

6f74de3d40ce488781357765605a5cee.png

 

五、Nginx(最小)配置详解

Nginx配置文件是nginx文件夹路径下的 conf中的 nginx.conf
可以先将该配置文件复制备份,防止后面写错了,还能对照格式修改回来。

c60ff12e3bde47fa833aca5c2fab0f23.png

这是一个nginx最常规的配置代码,替换掉原nginx.conf的代码,重启nginx或重新nginx加载配置,去浏览器访问,也能访问到默认页面。


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#vhost虚拟主机server {#监听端口号listen       80;#主机名\域名server_name  localhost;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#文件根目录,相对于nginx安装根目录路径root   html;#默认页名称,访问先到访页面index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

替换测试

#重新加载配置命令
nginx -s reload


6c7191d7b80e4e41b5283521ab5b85a4.png

访问IP地址,也能成功访问
   33ee65183c974850938b00aa7c98cdce.png

 

 

 六、Nginx(基础)配置详解

1、域名解析

域名解析是为了后面 ,进行域名配置时 ,进行练习。

1)购买域名解析(要花点钱)

建议用这个,可以熟悉一下,后面自己有服务器了,也还可以用,不想花钱的,可以选下面第2个

域名注册_域名查询_域名申请_域名购买_域名续费_国际域名-万网-阿里云品牌 (aliyun.com)https://wanwang.aliyun.com/domain/?spm=5176.100251.111252.18.1cb84f15FEfsCm在阿里云官网购买一个域名注册(购买要实名认证的)

a976b070079d4c7eacb49727bfd108fe.png

选一个便宜的购买就行,购买后一年有效期。

2b067409a74f4c2dad7158b402da7981.png购买后到域名控制台配置

c0d3127d17374b3292ea2ffe713a1586.png

5d1e83a5f07d483681e20d181ecfbe50.png

b5abd652dff34785a4f2dcb861440681.png

 

050d0b6ceedd4eca91d7af64b0b047c3.png

 

测试是否成功,ping一下域名。因为是虚拟机,只有在自己电脑上才能ping到,想在互联上访问,就要购买一个服务器,用服务器ip做域名解析。

如果ping不到,可能是防火墙拦截了,记得关一下防火墙

650da47598ab46498d37871e2bb68af3.png

解析后也能直接通过域名访问网页了。如果端口不是80,要在域名后加上端口号

3a2d4d58b83e4a77838fd066e8b9d21b.png

2)自己电脑配置hosts解析(免费)

因为是虚拟机,所以解析后只能在自己电脑上访问。

在自己电脑c盘上搜索hosts,找到并到该路径下。

#一般都在这路径下
C:\Windows\System32\drivers\etc

b0cb42a2a19446449998b16ee5b3284b.png

73ad69de9e214ec99ed7c289ab2fef1f.png

在桌面编辑保存后,并复制粘贴替换到原路径上的文件。这个只能匹配对应的前缀+域名,练习完后可把该文件加的解析删了。

0c33ddb7089c4801b489572fe5b286bb.png

5fc1cd9ff25a4021b29f5b8e0587c5c6.png

打开命令窗口,ping一下,看能不能通。

 

2、同一IP用不同端口访问不同页面

1)桌面新建两个文件夹

这两个文件用来放两个不同html页面

c79eb7e1051848398b3fe537003cb6b1.png

2)创建html文件

在新的两个文件夹中,都新建一个文本文档,然后将名称和后缀改成index.html,右键编辑,随便在里面写点什么,能区分两个页面就行

#www
Hello Wlorld!1-1#web
Hello Wlorld!2-2

9e1a76a7bebd467e8fc777891ac6ccdd.png

613b4bb9b3ad4845a89a3a4c9c7863c2.png

3)nginx.conf代码

自行跟上面的常规配置对比,主要多了一个虚拟主机server代码,给了888和899端口,修改了匹配展示页面的路径。

baeeeba9c37146af843f03f7f1f00be5.png


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#vhost虚拟主机-1server {#监听端口号listen       888;#主机名\域名server_name  localhost;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#文件根目录,相对于nginx安装根目录路径root   C:/Users/Administrator/Desktop/web;#默认页名称,访问先到访页面index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}#vhost虚拟主机-2server {#监听端口号listen       899;#主机名\域名server_name  localhost;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#文件根目录,相对于nginx安装根目录路径root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

4)重启

把代码加进配置文件中,在nginx安装路径下执行nginx -t 命令测试配置是否生效,。看不懂英文的,翻译软件翻译一下,提示正确,重新加载配置。

#。测试配置是否正确,实际环境中都会先测试一下,再重启弎或重新加载配置
nginx -t
#重新加载配置
nginx -s reload

090094eef58a4def846fccf889b6dbdf.png

5)访问地址测试

IP后面加端口,ip:888,ip:899。

注意防火墙,开通一下端口,要么直接关闭防火墙。这为了方便就直接关闭防火墙了。

b7b9eb45682b4c03837cabb3ab59c1c7.png

35c42c9d683449c3804f9b3ee2e956f2.png

 

3、同一IP同一端口用不同域名访问不同页面

1)html页面文件夹还是用上面那两个

 

2)nginx.conf代码

端口号改回80,更改域名,根据域名前缀来匹配。

也可不更改端口,域名后加上端口,即可访问。

17d8f7ac3496467eb8f1e6e25608f6ac.png


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#vhost虚拟主机-1server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  www.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#文件根目录,相对于nginx安装根目录路径root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}#vhost虚拟主机-2server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  aaa.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#文件根目录,相对于nginx安装根目录路径root   C:/Users/Administrator/Desktop/web;#默认页名称,访问先到访页面index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

3)重启

把代码加进配置文件中,在nginx安装路径下执行nginx -t 命令测试配置是否生效。看不懂英文的,翻译软件翻译一下,提示正确,重新加载配置。

#。测试配置是否正确,实际环境中都会先测试一下,再重启弎或重新加载配置
nginx -t
#重新加载配置
nginx -s reload

b43e4ca442564580890e96a24fbf114d.png

4)访问地址测试

域名直接访问,端口如果不是80要加上端口号。

因为配置域名解析的时候是配置解析全部的,所以除了第二个vhost虚拟主机-2的配置的aaa.lingran.website域名会到第二个页面,其他的域名默认到第一个页面即vhost虚拟主机-1的页面。

如果想其他域名默认到vhost虚拟主机-2的页面,可将域名改为通配符 *.lingran.website ,。这样除了www.lingran.website会到vhost虚拟主机-1的页面,其他的都到vhost虚拟主机-2的页面。

匹配为顺序精准匹配→域名后缀通配符匹配→域名前缀通配符匹配→正则匹配,匹配到则停止

8a556204b40c421399d8e75872cfbe28.png

ad2488a950494c6aa469d4964da450e1.png

7581d52682a84256a8f535ce93819cce.png

七、反向代理

1、概念

反向代理的代理服务器在服务端,请求是被动的被代理了。反向代理客户端看不到真正的业务服务器。

1c9794c5e0884a509a80a5130b750a2c.png

正向代理的代理服务器在客户端,请求是主动要求被代理的。正向代理服务器看不到真正的客户端。
6528ab1395a7482091af04644d7e6c63.png

2、反向代理nginx.conf代码配置

proxy_pass配置,代理b站和百度这两个网址。

ac1328c4f2f1496a885431cc3afa8cb7.png

nginx.conf代码


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#vhost虚拟主机-1server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  www.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。proxy_pass https://www.bilibili.com;#文件根目录,相对于nginx安装根目录路径#root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面#index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}#vhost虚拟主机-2server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  aaa.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。proxy_pass https://www.baidu.com;#文件根目录,相对于nginx安装根目录路径#root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面#index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

3、重启

把代码加进配置文件中,在nginx安装路径下执行nginx -t 命令测试配置是否生效。看不懂英文的,翻译软件翻译一下,提示正确,重新加载配置。

#。测试配置是否正确,实际环境中都会先测试一下,再重启弎或重新加载配置
nginx -t
#重新加载配置
nginx -s reload

ebdf8131288841acab2a9dac22891d68.png

 

4、访问地址测试

访问ip地址、域名可访问到代理配置对应的地址。

198c903aa0dd46d6918fdb63a1403a3b.png

ee8510d1f3794ae8b68e5bc6c8a13b6b.png

eb010b66702c41448c7756e87820b06b.png

 

八、负载均衡

 

1、克隆

为了演示,要再加2台服务器,这边从原来演示的那一台虚拟机服务器再克隆两台。

b4ca822168104e89a817ce09e8cbf799.png

6672608ccde6431b8167836753c8acfd.png

3e63678afda243b59fad1d8d3e64f288.png

5cc246da4f864ac987b6a94f8b76992b.png

3c72d054c94443979da310522b1b89b2.png

按照上面的流程,再克隆一台出来

6c259a89b6ca4ec784c9310c43adbb37.png

2、启动服务器

把3台服务器都启动,并查看ip(记一下,后面要用)。

0290d2ae7ded41fc80ffe65a8d8e6395.png

9e3a79b3a38049338b0ff791389935eb.png

2ba42ffcd1d943ce842a0019944418cd.png

 

3、修改新增的两台服务nginx.conf配置

1)新增的两台服务器配置

一个台服务器配一个server就行,记得修改一下路径,让两个服务器的页面不一样。

929e8b892fd7456397c200243529db39.png

5ef1d5392c564d5abb7b1ee528dc5aae.png


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#vhost虚拟主机-1server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  localhost;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。#proxy_pass https://www.bilibili.com;#文件根目录,相对于nginx安装根目录路径root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

2)启动nginx并查看页面

启动成功后,去浏览器访问新的两个服务器ip。

f5366d29c313408ebc572ae9a1b24423.png

dd10923a87904f4a8de556474c0fcf10.png

4、原服务器配置负载均衡

1)自动轮询nginx.conf代码配置

轮流访问每个服务器

0ab54b7c91d14c53a4fb635bc83b288e.png


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#负载均衡服务器定义upstream  asd{server 192.168.222.131;server 192.168.222.132;}#vhost虚拟主机-1server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  www.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。proxy_pass http://asd;#文件根目录,相对于nginx安装根目录路径#root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面#index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

2)测试

访问服务器ip,能轮流访问到两个新增服务器的页面

2331706cc3dd400db2cdb6143843aeec.png

fa2163f5d3254d2d82b17f7dac6f909c.png

3)权重轮询(weight)

weight:默认为1.weight越大,负载的权重就越大,按分配的权重比例分配访问次数。

6d8d34247ffd42808a08dfd13d1db5dc.png


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#upstream负载均衡服务器定义,weight权重分配upstream  asd{server 192.168.222.131 weight=8;server 192.168.222.132 weight=2;}#vhost虚拟主机-1server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  www.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。proxy_pass http://asd;#文件根目录,相对于nginx安装根目录路径#root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面#index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

4)down和backup

1.down:

是在upstream负载均衡服务器定义中,对其中的服务器做下线标记,不过不怎么用,一般想要下线服务器直接注释掉就行。

	#upstream负载均衡服务器定义,weight权重分配upstream  asd{server 192.168.222.131 weight=8 down;server 192.168.222.132 weight=2;}

2.backup:

是在upstream负载均衡服务器定义中,定义这个服务器是待机服务器,只有其他服务器全宕了,才会用到待机服务器。

	#upstream负载均衡服务器定义,weight权重分配upstream  asd{server 192.168.222.131 weight=8;server 192.168.222.132 weight=2;server 192.168.222.132 weight=2 backup;}

5)不常用(ip_hash、least_conn、url_hash、fair)

1.ip_hash

根据客户端的ip地址转发同一台服务器,可以保持会话。前提是用户ip没有发生更改。
如果需要临时删除其中一台服务器,则应用为了保留客户端 IP 地址,只能标记 down 。
	#upstream负载均衡服务器定义,weight权重分配upstream  asd{#保持同一个地址访问同一个服务器ip_hash;server 192.168.222.131 weight=8;server 192.168.222.132 weight=2;server 192.168.222.132 weight=2 down;}

 

2.least_conn

指定组应使用负载平衡方法,其中请求传递到活动连接数最少的服务器, 考虑到服务器的权重。 如果有多个这样的服务器,则使用加权循环平衡法。

 

选择活跃连接数与权重weight的比值最小者为下一个处理请求的server。上次已选的server和已达到最大连接数的server的不在选择范围。

加权循环平衡法

如一个upstream有三台server:

#upstream负载均衡服务器定义,weight权重分配
upstream aaa {#选取活跃连接数与权重weight的比值最小者为下一个处理请求的serverleast_conn;server 192.168.222.131 weight=8;server 192.168.222.132 weight=2;server 192.168.222.132 weight=2;
}

如上一个请求选择了第二台192.168.222.132,下一个请求到来,通过比较剩下可用的server的conns(连接数)/weight的值,决定哪一台。

如果192.168.222.131连接数为40,192.168.222.133连接数为8,权重分别是8和2,计算结果
192.168.222.131:40/8=5

192.168.222.132:8/2=4

因为 5 > 4,因为192.168.222.132的最小且链接数未满,所以选择192.168.222.132而不选192.168.222.131。尽管连接数192.168.222.131要大于192.168.222.132。

3.url_hash

定向流量转发,根据用户访问的url定向转发请求,主要用于访问固定位置的资源,如下载文件
#upstream负载均衡服务器定义,weight权重分配
upstream aaa {#主要用于访问固定位置的资源,如下载文件hash $request_uri;server 192.168.222.131 weight=8;server 192.168.222.132 weight=2;server 192.168.222.132 weight=2;
}

4.fair

根据后端服务器响应时间转发请求,基于每个后端服务器的响应时间和连接数来动态调整权重
#upstream负载均衡服务器定义,weight权重分配
upstream aaa {fair;server 192.168.222.131 weight=8;server 192.168.222.132 weight=2;server 192.168.222.132 weight=2;
}

 

九、动静分离

将 css、img、js等这些配置文件,放到nginx服务器上,不用放在后面的服务器上。

1、普通配置

 

d39084fbb3bd4293a2a0097dc11a11c6.png


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#负载均衡服务器定义upstream  asd{server 192.168.222.131;server 192.168.222.132;}#vhost虚拟主机-1server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  www.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。proxy_pass http://asd;#文件根目录,相对于nginx安装根目录路径#root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面#index  index.html index.htm;}#配置css,到root后面的路径,匹配csslocation /css {#文件根目录,相对于nginx安装根目录路径root   C:/Users/Administrator/Desktop/www;index  index.html index.htm;}#配置js,到root后面的路径,匹配jslocation /js {#文件根目录,相对于nginx安装根目录路径root   C:/Users/Administrator/Desktop/www;index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

2、正则配置

正则基本用法要有一些了解

8f0975b4882a48fdba77457782237395.png


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#负载均衡服务器定义upstream  asd{server 192.168.222.131;server 192.168.222.132;}#vhost虚拟主机-1server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  www.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。proxy_pass http://asd;#文件根目录,相对于nginx安装根目录路径#root   C:/Users/Administrator/Desktop/www;#默认页名称,访问先到访页面#index  index.html index.htm;}#~表示要使用正则了,*表示不区分大小写,|隔开今写多个location ~*/(css|js|img) {#这三个静态文件夹css、js、img,要在下面的路径里root   C:/Users/Administrator/Desktop/www;index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

 

十、UrlRewrite

1、参数详情

地址重写,用户得到的都是经过处理后的URL地址。

#样例
rewrite ^/([0-9]+).html$ /index.jsp?pageNum=$1 break;

2649c29ee4974004b84b38e439c15646.png

rewrite     <regex>     <replacement>     [flag];
关键字         正则         替代内容         flag标记


关键字:关键字rewrite不能改变
正则:正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement


flag标记说明:

1、last
本条规则匹配完成后,继续向下匹配新的location URI规则
2、break
本条规则匹配完成即终止,不再匹配后面的任何规则

3、redirect
返回302临时重定向,浏览器地址会显示跳转后的URL地址

4、permanent
返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

 

2、nginx.conf配置

 

5193c61d56504f06a3c992b8fd29320c.png


#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;events {#单个业务进程可接受连接数worker_connections  1024;
}http {#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示include       mime.types;#如果mime类型没匹配上,默认使用二进制流的方式传输。default_type  application/octet-stream;#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfilesendfile        on;#保持链接时间keepalive_timeout  65;#负载均衡服务器定义upstream  asd{server 192.168.222.131;server 192.168.222.132;}#vhost虚拟主机-1server {#监听端口号listen       80;#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。server_name  www.lingran.website;#匹配路径url,样例:http://nginx.org/en/download.htmllocation / {#样例rewrite ^/([0-9]+).html$ /index.jsp?pageNum=$1 break;proxy_pass http://asd;}#~表示要使用正则了,*表示不区分大小写,|隔开今写多个location ~*/(css|js|img) {#这三个静态文件夹css、js、img,要在下面的路径里root   C:/Users/Administrator/Desktop/www;index  index.html index.htm;}#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.htmlerror_page   500 502 503 504  /50x.html;#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹location = /50x.html {root   html;}}}

3、效果

eb70ff311e7d4025b6864bd3c2e02cef.png

12a636d388dc445090be9e5f5d1c0fde.png

 

十一、报错

1、[error] OpenEvent("Global\ngx_reload_3220")

6da2bd70946e4a12b06d427e46e3f23b.png

nginx: [error] OpenEvent("Global\ngx_reload_3220") failed (2: The system cannot find the file specified)

命令窗口权限不足,以管理员权限打开命令窗口执行即可

 

目前这到这了

 

相关文章:

Windows 服务器Nginx 下载、部署、配置流程(图文教程)

不定期更新 目录 一、下载Nginx安装包 二、上传安装包 三、启动Nginx 四、Nginx常用命令 五、Nginx&#xff08;最小&#xff09;配置详解 六、Nginx&#xff08;基础&#xff09;配置详解 七、反向代理 八、负载均衡 九、动静分离 十、报错 一、下载Nginx安装包 四…...

基于Redis实现共享session登录

搭配食用&#xff1a;Redis&#xff08;基础篇&#xff09;-CSDN博客 项目实现前的 Mysql中的表&#xff1a; 表说明tb_user用户表tb_user_info用户详情表tb_shop商户信息表tb_shop_type商户类型表tb_blog用户日记表&#xff08;达人探店日记)tb_follow用户关注表tb_voucher优…...

shell函数的定义

shell函数的定义 ​ 定义:将命令序列按照格式写在一起.格式指的是函数的固定格式 ​ 作用:方便重复使用,还可以做成函数库,集中在一起,随时可以传参调用,大的工程分割成小的模块,提高代码的可读性. 函数的格式 vim hanshu1.shfunction shopping {命令序列}shopping () {命令…...

vue部署宝塔nginx配置(获取用户ip地址、反代理访问api接口、websocket转发)

以下配置为我自己的需求&#xff0c;因人而异&#xff0c;如果只是单纯的前端非交互页面&#xff0c;可以不用修改配置。 代码及注释&#xff0c;如下&#xff1a; #解决vue-router设置mode为history&#xff0c;去掉路由地址上的/#/后nginx显示404的问题location / {proxy_htt…...

Jenkins教程-3-github自动化测试任务构建

上一小节我们学习了Jenkins在windows和mac系统上安装搭建环境的方法&#xff0c;本小节我们讲解一下Jenkins构建github自动化测试任务的方法。 接下来我们以windows系统为例&#xff0c;讲解一下构建实际自动化测试任务的具体步骤。 安装git和github插件 点击进入Jenkins插件…...

0元体验苹果macOS系统,最简单的虚拟机部署macOS教程

前言 最近发现小伙伴热衷于在VMware上安装体验macOS系统&#xff0c;所以就有了今天的帖子。 正文开始 首先&#xff0c;鉴于小伙伴们热衷macOS&#xff0c;所以小白搜罗了一圈macOS系统&#xff0c;并开启了分享通道。 本次更新的系统版本是&#xff1a; macOS 10.13.6 ma…...

Codeforces Round 946 (Div. 3) E. Money Buys Happiness

m m m个月&#xff0c;每个月月底发 x x x的薪水&#xff0c;也就是第 i i i个月只能用前 i − 1 i-1 i−1个月挣的钱&#xff0c;而不能用这个月挣的钱。第 i i i个月花费 c [ i ] c[i] c[i]的薪水能获得 h [ i ] h[i] h[i]的快乐度&#xff0c;问最多能获取的快乐度是多少。 …...

Git记录 上传至Gitee

1.GitHub拉去的代码需要上传至自己的Gitee需要清除原有remote服务器信息 查看原始远程服务器信息&#xff0c;后删除远程服务器信息 git remote -v git remote rm origin 2.Gitee新建软件仓库 法1&#xff09;不用初始化仓库&#xff0c;初始化会自动生成.git。如果本地.git…...

笔记-前端

URL 输入到渲染的过程 域名解析&#xff0c;找到服务地址 构建 TCP 连接&#xff0c;若有 https&#xff0c;则多一层 TLS 握手&#xff0c; 特殊响应码处理 301 302 解析文档 构建 dom 树和 csscom 生成渲染树&#xff1a;从DOM树的根节点开始遍历每个可见节点&#xff0c;对于…...

事务AOP

事物管理 事务管理是指对一系列数据库操作进行管理&#xff0c;确保这些操作要么全部成功执行&#xff0c;要么在遇到错误时全部回滚&#xff0c;以维护数据的一致性和完整性。在多用户并发操作和大数据处理的现代软件开发领域中&#xff0c;事务管理已成为确保数据一致性和完…...

RAM和ROM

1&#xff0c;RAM和ROM区别 RAM和ROM都是由来存储的&#xff0c;比如CPU缓存&#xff0c;电脑和手机内存等属于RAM,而固态硬盘&#xff0c;U盘&#xff0c;手机的128G,256G存储空间等都属于ROM。他们的最主要区别是RAM在断电后存储数据就没有了&#xff0c;而ROM在断电后存储数…...

聊聊系统架构之负载均衡优化实践

一、写在前面 最近在进行线上监控检查时&#xff0c;我遇到了两个超出预期的案例。首先&#xff0c;网关层的监控数据与应用实际监控数据存在不一致性&#xff0c;尤其是max有较大的差异&#xff0c;详见如下图。其次在某个应用中&#xff0c;通过httpclient请求某域名时发现只…...

代码规范性思考

表命名和设计 业务模块前缀&#xff1b;下划线分隔&#xff0c;体现业务含义&#xff1b;数据库字符集、字段名、类型、长度、默认值&#xff1b;一对一、一对多、多对多建表&#xff1b;注释清晰&#xff1b;良好的索引&#xff1b; 接口文档 swagger增强工具swagger-boots…...

TestProject Python SDK入门

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;-CSDN博客跳槽涨薪的朋友们有福了&#xff0c;今天给大家推荐一个软件测试面试的刷题小程序。​编辑https://…...

服务器数据恢复—EMC Isilon存储中被误删的虚拟机数据恢复案例

服务器存储数据恢复环境&#xff1a; EMC Isilon S200集群存储&#xff0c;共三个节点&#xff0c;每节点配置12块SATA硬盘。 服务器存储故障&#xff1a; 工作人员误操作删除虚拟机&#xff0c;虚拟机中数据包括数据库、MP4、AS、TS类型的视频文件等。需要恢复数据的虚拟机通…...

华为安全Security认证,你了解多少?

华为安全Security 认证包含HCIA-Security, HCIP-Security,HCIE-Security。HCIA-Security 掌握中小型网络信息安全基础知识与相关技术&#xff08;华为防火墙技术、加解密技术、PKI 证书体系等&#xff09;&#xff0c;具备搭建小型企业信息安全网络的能力&#xff0c;实现中小企…...

自动驾驶规划-RTT* 算法 【免费获取Matlab代码】

目录 1.算法原理3.结果展示4.参考文献5.代码获取 1.算法原理 RRT(Rapidly-Exploring Random Trees) 快速随机扩展树&#xff0c;是一种单一查询路径规划算法。RRT 将根节点作为搜索的起点&#xff0c;然后通过随机撒点采样增加叶子节点的方式&#xff0c;生成一个随机扩展树&a…...

shell编程中的运算符的讲解

在Linux操作系统中也可以使用expr来进行一些数值的运算&#xff0c;expr接受表达式作为参数&#xff0c;并打印计算结果。 对于某些复杂的表达式或早期不支持内嵌算术表达式的Shell环境&#xff0c;expr 仍然是一个可行的选择。 如上图所示&#xff0c;是使用变量sum来承接加和…...

yudao-ui-admin-vue3 nginx配置

本文记录一个yudao-ui-admin-vue3 nginx配置信息 一、安装依赖 npm install 二、编译打包 npm run build:prod三、修改.env.prod文件 # 请求路径 VITE_BASE_URL=http://IP地址/admin-api四、 nginx配置 server {listen 80;server_name localhost...

vue3第四十节(pinia的用法注意事项解构store)

pinia 主要包括以下五部分&#xff0c;经常用到的是 store、state、getters、actions 以下使用说明&#xff0c;注意事项&#xff0c;仅限于 vue3 setup 语法糖中使用&#xff0c;若使用选项式 API 请直接查看官方文档&#xff1a; 一、前言&#xff1a; pinia 是为了探索 vu…...

PostgreSQL源码分析——索引扫描

这里&#xff0c;我们分析一下索引扫描的过程&#xff0c;以最简单的select * from t1 where a 100;语句为例&#xff0c;分析一下查询的过程。 postgrespostgres# \d t1;Table "public.t1"Column | Type | Collation | Nullable | Default ------------------…...

零基础入门学用Arduino 第四部分(一)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…...

x-anylabelimg如何标识人脸

软件地址&#xff0c;下载CPU版本就好 https://github.com/CVHub520/X-AnyLabeling/releases/tag/v2.0.0 一、打开软件选择的一个按钮&#xff0c;选择文件夹 二、选择模型运行 未下载的模型需要安全上网下载 选用Yolov6Lite_l-Face MeiTuan生成的文件格式&#xff0c;略作调…...

Element-ui中Table表格无法显示

Element-ui中Table表格无法显示 在使用过程中发现样式正常显示但是table就是不显示&#xff0c;研究了一段时间后&#xff0c;发现问题是项目结构的问题 当你创建vue和安装el的时候&#xff0c;一定要注意进入到正确的项目文件夹&#xff0c;如果在外面也出现一个package.jso…...

电信网关配置管理系统 del_file.php 前台RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…...

游戏心理学Day18

游戏玩家心理 在游戏世界中&#xff0c;设计师的工作总是围绕尽可能留住玩家要展开。在游戏创作时&#xff0c;设计师会假设目标诉讼的特点并激励迎合他们的需求&#xff0c;如果这种假设是经过实际调研之后做出的&#xff0c;那么就会比较接近实际情况而。如果这种假设是设计…...

发文章不违规的5种解决方案,非常适用,记得收藏!

之前以为使用AI写出来的文章&#xff0c;只要检测通过就不会违规&#xff0c;结果却还是让我有些失望。最近测试几款AI工具&#xff0c;测试结果都还是会存在违规情况&#xff0c;无法全文发布。 AI是听从人的指令&#xff0c;只能说是如何下指令&#xff0c;这个非常重要。至…...

【ARMv8/ARMv9 硬件加速系列 2.2 -- ARM NEON 的加减乘除(左移右移)运算】

文章目录 NEON 加减乘除NEON 加减乘除 下面代码是使用ARMv8汇编语言对向量寄存器v0-v31执行加、减、乘以及左移和右移操作的示例。 ARMv8的SIMD指令集允许对向量寄存器中的多个数据进行并行操作。v0和v1加载数据,对它们进行加、减和乘,左移和右移操作。最后,我们会将结果存储…...

[2024-06]-[大模型]-[Ollama]- WebUI

主要涉及要部署的前端webui是来源于:https://github.com/open-webui/open-webui 正常就使用: docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-web…...

AI智能盒子助力中钢天源设备工厂升级安全防护

中钢集团安徽天源科技股份有限公司成立于2002年3月27日,是中央企业中国中钢股份有限公司控股的上市公司&#xff0c;主导产品为永磁铁氧体器件、钕铁硼器件、四氧化三锰、锶铁氧体预烧料及各类磁选机等。 在中钢天源智能化升级过程中&#xff0c;采用并定制开发一系列厂区安全…...

主流的自助建站网站/seo优化培训班

谈一谈 iOS 开发的发展历史与未来展望前提摘要发展历史现状分析前景展望前提摘要 回想 iPhone 4 横空出世时&#xff0c;彼时的 Joe大叔 还在象牙塔里恣意的享受人生。殊不知当移动设备终端被重新定义后&#xff0c;一场轰轰烈烈的移动开发热潮就此拉开序幕。 本文着眼于漫谈…...

广告网站设计方案/在哪里可以找到网站

问题描述&#xff1a;当使用Quartus II综合好的文件下载到FPGA时发现&#xff0c;没有识别到下载接口USB_Blaster,如下图所示。 图片中高亮的部分只有显示No Hardware,并没有显示我们需要的USB-Blaster[USB-0]&#xff08;上面截图显示出来USB-Blaster[USB-0]是因为这张图是我…...

郑州网站建设代理/关键词全网搜索指数

最近偶尔有点失眠&#xff0c;但是没有太多影响到工作。反而感觉比较以前好多了。 关于失眠我们可能有一种错误的认识&#xff0c;其实我感觉&#xff0c;失眠一般没有器质性的病理的话&#xff0c;而原因无外乎有两点&#xff1a; 1.太把睡眠当回事&#xff0c;总是害怕失眠、…...

公司企业网站怎么建设/做网络推广费用

2019年5月&#xff0c;我们发布了《7款路由器口碑评价》&#xff0c;不少消费者评论&#xff0c;希望看到更高端路由器的口碑推荐。2019年8月&#xff0c;《消费者报道》汇总了京东、天猫、苏宁平台上的约3万条消费者评价&#xff0c;对市面热销的14款200元以上的中高端路由器进…...

WordPress微信高级机器人/seo黑帽教程视频

对于java中求一个闰年, 或许大家都很熟悉: 就是 判断这个年份能被4整除,并且不能被100整除, 或者是能被400整除 在这里直接上代码Scanner sc new Scanner(System.in);System.out.println("请输入一个年份");int i sc.nextInt();//for(int i 0 ;i<10000;i){if…...

无锡华士镇网站建设/小红书广告投放平台

问题描述Farmer John变得非常懒&#xff0c;他不想再继续维护供奶牛之间供通行的道路。道路被用来连接N个牧场&#xff0c;牧场被连续地编号为1到N。每一个牧场都是一个奶牛的家。FJ计 划除去P条道路中尽可能多的道路&#xff0c;但是还要保持牧场之间 的连通性。你首先要决定那…...