Windows 服务器Nginx 下载、摆设、配置流程(图文教程)
不定期更新目录
一、下载Nginx安装包
二、上传安装包
三、启动Nginx
四、Nginx常用命令
五、Nginx(最小)配置详解
六、Nginx(根本)配置详解
七、反向署理
八、负载均衡
九、动静分离
十、报错
一、下载Nginx安装包
四个网址,根据自己的情况选择,我是用Nginx开源版的。
1、下载网址
1)Nginx开源版
nginx newshttps://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8http://nginx.org/
2)Openresty
OpenResty® - 开源官方站https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://openresty.org/cn/
3)Tengine
Tengine Web 服务器 (taobao.org)https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://tengine.taobao.org/
4)Nginx plus 贸易版(收费)
F5 | 多云安全和应用交付https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://www.f5.com.cn/
2、下载
在Nginx开源版选择对应系统下载nginx安装包
https://img-blog.csdnimg.cn/direct/20fbb724ad794a769dbb9d9497db6e49.png
https://img-blog.csdnimg.cn/direct/e5d7d92c0ed44fdfafddd4974071b387.png
二、上传安装包
将下载的Nginx安装包上传到Windows假造机中并解压到想安装的路径,我就直接在桌面操作了
假如没有Windows Server 假造机的,可以看一下这一篇安装一个。 VMware Windows Server 假造机安装 详细教程_vmware安装windows server-CSDN博客https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://blog.csdn.net/weixin_68547003/article/details/135177616 常用目录布局 1、conf 存放相干配置文件 2、html 存放静态文件的默认目录 html、css等 3、logs 存放Nginx相干日志 https://img-blog.csdnimg.cn/direct/9e898ede4447453aa42a8b5c636a1466.png
三、启动Nginx
1、双击nginx.exe启动
双击后窗口会一闪而过。https://img-blog.csdnimg.cn/direct/b41c394d120b4d8fa2f8979e86dae4e5.png
2、查看是否启动成功
https://img-blog.csdnimg.cn/direct/77712dbe4ba6434f8d41735b4a82bde1.png
https://img-blog.csdnimg.cn/direct/13ec53cbdf424891a39c64d0624087b3.png
3、访问默认页面确认
先查看服务器ip
https://img-blog.csdnimg.cn/direct/dac4036241ea416b81c534a1ede0c734.png
https://img-blog.csdnimg.cn/direct/5034d3fc285440efb4adea1e1f5df8a3.png
https://img-blog.csdnimg.cn/direct/2613001b9222465b90b7a1bb9e583661.png
打开服务器浏览器访问ip地址,默认端口是80,可以不消写。直访问ip,出现下图界面,则表示已经成功启动。
https://img-blog.csdnimg.cn/direct/ccbd552ac4c94bf48433f43c20726253.png
4、防火墙配置
在自己电脑访问,要么关闭防火墙,要么开通80端口访问权限,下面是允许通过80端口权限添加操作流程,背面增长端口也是这么配置的相对应的策略。
https://img-blog.csdnimg.cn/direct/baf0527c11574fb18045a4e18268c4ab.png
也可以通过控制面板→系统和安全→Windows防火墙→高级设置流程。
https://img-blog.csdnimg.cn/direct/4c2ee324898c4c74ae9f660608d2ef48.png
添加入站规则
https://img-blog.csdnimg.cn/direct/86b0f254c57e44c0a3096301d152af1e.png
允许通过80端口访问
https://img-blog.csdnimg.cn/direct/cf6db22b5d494f889b773be2e6602cec.png
https://img-blog.csdnimg.cn/direct/ea6db3072fc0464fa20073b602e2e17d.png
https://img-blog.csdnimg.cn/direct/1e8d125e7d4b4346b8ec354ab0317181.png
https://img-blog.csdnimg.cn/direct/4c520c9c97e84875acbc5be1aa635e1f.png
添加完成后,在自己电脑访问服务器ip,出现下图界面表示成功。
https://img-blog.csdnimg.cn/direct/d0877758c6c34dfba515bee88fc3a59a.png
四、Nginx常用命令
Nginx常用命令命令阐明start nginx 启动nginxnginx -s stop停用Nginxnginx -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文件夹路径下
https://img-blog.csdnimg.cn/direct/3efad193846f4f27bff76d2c4f076ca0.png
https://img-blog.csdnimg.cn/direct/ee61711fa8404005b9f36fe4007aa5b1.png
命令启动并查看版本信息
https://img-blog.csdnimg.cn/direct/6f74de3d40ce488781357765605a5cee.png
五、Nginx(最小)配置详解
Nginx配置文件是nginx文件夹路径下的conf中的nginx.conf 可以先将该配置文件复制备份,防止背面写错了,还能对照格式修改回来。 https://img-blog.csdnimg.cn/direct/c60ff12e3bde47fa833aca5c2fab0f23.png
这是一个nginx最常规的配置代码,更换掉原nginx.conf的代码,重启nginx或重新nginx加载配置,去浏览器访问,也能访问到默认页面。
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#vhost虚拟主机
server {
#监听端口号
listen 80;
#主机名\域名
server_namelocalhost;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#文件根目录,相对于nginx安装根目录路径
root html;
#默认页名称,访问先到访页面
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
}
更换测试
#重新加载配置命令
nginx -s reload
https://img-blog.csdnimg.cn/direct/6c7191d7b80e4e41b5283521ab5b85a4.png
访问IP地址,也能成功访问
https://img-blog.csdnimg.cn/direct/33ee65183c974850938b00aa7c98cdce.png
六、Nginx(根本)配置详解
1、域名解析
域名解析是为了背面 ,进行域名配置时 ,进行练习。
1)购买域名解析(要花点钱)
建议用这个,可以认识一下,背面自己有服务器了,也还可以用,不想花钱的,可以选下面第2个
域名注册_域名查询_域名申请_域名购买_域名续费_国际域名-万网-阿里云品牌 (aliyun.com)https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://wanwang.aliyun.com/domain/?spm=5176.100251.111252.18.1cb84f15FEfsCm在阿里云官网购买一个域名注册(购买要实名认证的)
https://img-blog.csdnimg.cn/direct/a976b070079d4c7eacb49727bfd108fe.png
选一个自制的购买就行,购买后一年有效期。
https://img-blog.csdnimg.cn/direct/2b067409a74f4c2dad7158b402da7981.png购买后到域名控制台配置
https://img-blog.csdnimg.cn/direct/c0d3127d17374b3292ea2ffe713a1586.png
https://img-blog.csdnimg.cn/direct/5d1e83a5f07d483681e20d181ecfbe50.png
https://img-blog.csdnimg.cn/direct/b5abd652dff34785a4f2dcb861440681.png
https://img-blog.csdnimg.cn/direct/050d0b6ceedd4eca91d7af64b0b047c3.png
测试是否成功,ping一下域名。因为是假造机,只有在自己电脑上才气ping到,想在互联上访问,就要购买一个服务器,用服务器ip做域名解析。
假如ping不到,大概是防火墙拦截了,记得关一下防火墙
https://img-blog.csdnimg.cn/direct/650da47598ab46498d37871e2bb68af3.png
解析后也能直接通过域名访问网页了。假如端口不是80,要在域名后加上端标语
https://img-blog.csdnimg.cn/direct/3a2d4d58b83e4a77838fd066e8b9d21b.png
2)自己电脑配置hosts解析(免费)
因为是假造机,所以解析后只能在自己电脑上访问。
在自己电脑c盘上搜刮hosts,找到并到该路径下。
#一般都在这路径下
C:\Windows\System32\drivers\etc https://img-blog.csdnimg.cn/direct/b0cb42a2a19446449998b16ee5b3284b.png
https://img-blog.csdnimg.cn/direct/73ad69de9e214ec99ed7c289ab2fef1f.png
在桌面编辑生存后,并复制粘贴更换到原路径上的文件。这个只能匹配对应的前缀+域名,练习完后可把该文件加的解析删了。
https://img-blog.csdnimg.cn/direct/0c33ddb7089c4801b489572fe5b286bb.png
https://img-blog.csdnimg.cn/direct/5fc1cd9ff25a4021b29f5b8e0587c5c6.png
打开命令窗口,ping一下,看能不能通。
2、同一IP用不同端口访问不同页面
1)桌面新建两个文件夹
这两个文件用来放两个不同html页面
https://img-blog.csdnimg.cn/direct/c79eb7e1051848398b3fe537003cb6b1.png
2)创建html文件
在新的两个文件夹中,都新建一个文本文档,然后将名称和后缀改成index.html,右键编辑,随便在里面写点什么,能区分两个页面就行
#www
Hello Wlorld!1-1
#web
Hello Wlorld!2-2 https://img-blog.csdnimg.cn/direct/9e1a76a7bebd467e8fc777891ac6ccdd.png
https://img-blog.csdnimg.cn/direct/613b4bb9b3ad4845a89a3a4c9c7863c2.png
3)nginx.conf代码
自行跟上面的常规配置对比,主要多了一个假造主机server代码,给了888和899端口,修改了匹配展示页面的路径。
https://img-blog.csdnimg.cn/direct/baeeeba9c37146af843f03f7f1f00be5.png
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#vhost虚拟主机-1
server {
#监听端口号
listen 888;
#主机名\域名
server_namelocalhost;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#文件根目录,相对于nginx安装根目录路径
root C:/Users/Administrator/Desktop/web;
#默认页名称,访问先到访页面
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
#vhost虚拟主机-2
server {
#监听端口号
listen 899;
#主机名\域名
server_namelocalhost;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#文件根目录,相对于nginx安装根目录路径
root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_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 https://img-blog.csdnimg.cn/direct/090094eef58a4def846fccf889b6dbdf.png
5)访问地址测试
IP背面加端口,ip:888,ip:899。
注意防火墙,开通一下端口,要么直接关闭防火墙。这为了方便就直接关闭防火墙了。
https://img-blog.csdnimg.cn/direct/b7b9eb45682b4c03837cabb3ab59c1c7.png
https://img-blog.csdnimg.cn/direct/35c42c9d683449c3804f9b3ee2e956f2.png
3、同一IP同一端口用不同域名访问不同页面
1)html页面文件夹照旧用上面那两个
2)nginx.conf代码
端标语改回80,更改域名,根据域名前缀来匹配。
也可不更改端口,域名后加上端口,即可访问。
https://img-blog.csdnimg.cn/direct/17d8f7ac3496467eb8f1e6e25608f6ac.png
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#vhost虚拟主机-1
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_namewww.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#文件根目录,相对于nginx安装根目录路径
root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
#vhost虚拟主机-2
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_nameaaa.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#文件根目录,相对于nginx安装根目录路径
root C:/Users/Administrator/Desktop/web;
#默认页名称,访问先到访页面
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_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 https://img-blog.csdnimg.cn/direct/b43e4ca442564580890e96a24fbf114d.png
4)访问地址测试
域名直接访问,端口假如不是80要加上端标语。
因为配置域名解析的时间是配置解析全部的,所以除了第二个vhost假造主机-2的配置的aaa.lingran.website域名会到第二个页面,其他的域名默认到第一个页面即vhost假造主机-1的页面。
假如想其他域名默认到vhost假造主机-2的页面,可将域名改为通配符 *.lingran.website ,。这样除了www.lingran.website会到vhost假造主机-1的页面,其他的都到vhost假造主机-2的页面。
匹配为次序精准匹配→域名后缀通配符匹配→域名前缀通配符匹配→正则匹配,匹配到则制止
https://img-blog.csdnimg.cn/direct/8a556204b40c421399d8e75872cfbe28.png
https://img-blog.csdnimg.cn/direct/ad2488a950494c6aa469d4964da450e1.png
https://img-blog.csdnimg.cn/direct/7581d52682a84256a8f535ce93819cce.png
七、反向署理
1、概念
反向署理的署理服务器在服务端,请求是被动的被署理了。反向署理客户端看不到真正的业务服务器。
https://img-blog.csdnimg.cn/direct/1c9794c5e0884a509a80a5130b750a2c.png
正向署理的署理服务器在客户端,请求是自动要求被署理的。正向署理服务器看不到真正的客户端。
https://img-blog.csdnimg.cn/direct/6528ab1395a7482091af04644d7e6c63.png
2、反向署理nginx.conf代码配置
proxy_pass配置,署理b站和百度这两个网址。
https://img-blog.csdnimg.cn/direct/ac1328c4f2f1496a885431cc3afa8cb7.png
nginx.conf代码
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#vhost虚拟主机-1
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_namewww.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。
proxy_pass https://www.bilibili.com;
#文件根目录,相对于nginx安装根目录路径
#root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
#indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
#vhost虚拟主机-2
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_nameaaa.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。
proxy_pass https://www.baidu.com;
#文件根目录,相对于nginx安装根目录路径
#root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
#indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_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 https://img-blog.csdnimg.cn/direct/ebdf8131288841acab2a9dac22891d68.png
4、访问地址测试
访问ip地址、域名可访问到署理配置对应的地址。
https://img-blog.csdnimg.cn/direct/198c903aa0dd46d6918fdb63a1403a3b.png
https://img-blog.csdnimg.cn/direct/ee8510d1f3794ae8b68e5bc6c8a13b6b.png
https://img-blog.csdnimg.cn/direct/eb010b66702c41448c7756e87820b06b.png
八、负载均衡
1、克隆
为了演示,要再加2台服务器,这边从原来演示的那一台假造机服务器再克隆两台。
https://img-blog.csdnimg.cn/direct/b4ca822168104e89a817ce09e8cbf799.png
https://img-blog.csdnimg.cn/direct/6672608ccde6431b8167836753c8acfd.png
https://img-blog.csdnimg.cn/direct/3e63678afda243b59fad1d8d3e64f288.png
https://img-blog.csdnimg.cn/direct/5cc246da4f864ac987b6a94f8b76992b.png
https://img-blog.csdnimg.cn/direct/3c72d054c94443979da310522b1b89b2.png
按照上面的流程,再克隆一台出来
https://img-blog.csdnimg.cn/direct/6c259a89b6ca4ec784c9310c43adbb37.png
2、启动服务器
把3台服务器都启动,并查看ip(记一下,背面要用)。
https://img-blog.csdnimg.cn/direct/0290d2ae7ded41fc80ffe65a8d8e6395.png
https://img-blog.csdnimg.cn/direct/9e3a79b3a38049338b0ff791389935eb.png
https://img-blog.csdnimg.cn/direct/2ba42ffcd1d943ce842a0019944418cd.png
3、修改新增的两台服务nginx.conf配置
1)新增的两台服务器配置
一个台服务器配一个server就行,记得修改一下路径,让两个服务器的页面不一样。
https://img-blog.csdnimg.cn/direct/929e8b892fd7456397c200243529db39.png
https://img-blog.csdnimg.cn/direct/5ef1d5392c564d5abb7b1ee528dc5aae.png
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#vhost虚拟主机-1
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_namelocalhost;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。
#proxy_pass https://www.bilibili.com;
#文件根目录,相对于nginx安装根目录路径
root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
}
2)启动nginx并查看页面
启动成功后,去浏览器访问新的两个服务器ip。
https://img-blog.csdnimg.cn/direct/f5366d29c313408ebc572ae9a1b24423.png
https://img-blog.csdnimg.cn/direct/dd10923a87904f4a8de556474c0fcf10.png
4、原服务器配置负载均衡
1)自动轮询nginx.conf代码配置
轮番访问每个服务器
https://img-blog.csdnimg.cn/direct/0ab54b7c91d14c53a4fb635bc83b288e.png
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#负载均衡服务器定义
upstreamasd{
server 192.168.222.131;
server 192.168.222.132;
}
#vhost虚拟主机-1
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_namewww.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。
proxy_pass http://asd;
#文件根目录,相对于nginx安装根目录路径
#root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
#indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
}
2)测试
访问服务器ip,能轮番访问到两个新增服务器的页面
https://img-blog.csdnimg.cn/direct/2331706cc3dd400db2cdb6143843aeec.png
https://img-blog.csdnimg.cn/direct/fa2163f5d3254d2d82b17f7dac6f909c.png
3)权重轮询(weight)
weight:默以为1.weight越大,负载的权重就越大,按分配的权重比例分配访问次数。
https://img-blog.csdnimg.cn/direct/6d8d34247ffd42808a08dfd13d1db5dc.png
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#upstream负载均衡服务器定义,weight权重分配
upstreamasd{
server 192.168.222.131 weight=8;
server 192.168.222.132 weight=2;
}
#vhost虚拟主机-1
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_namewww.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。
proxy_pass http://asd;
#文件根目录,相对于nginx安装根目录路径
#root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
#indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
}
4)down和backup
1.down:
是在upstream负载均衡服务器界说中,对其中的服务器做下线标志,不过不怎么用,一般想要下线服务器直接解释掉就行。
#upstream负载均衡服务器定义,weight权重分配
upstreamasd{
server 192.168.222.131 weight=8 down;
server 192.168.222.132 weight=2;
} 2.backup:
是在upstream负载均衡服务器界说中,界说这个服务器是待机服务器,只有其他服务器全宕了,才会用到待机服务器。
#upstream负载均衡服务器定义,weight权重分配
upstreamasd{
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权重分配
upstreamasd{
#保持同一个地址访问同一个服务器
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的比值最小者为下一个处理请求的server
least_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、普通配置
https://img-blog.csdnimg.cn/direct/d39084fbb3bd4293a2a0097dc11a11c6.png
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#负载均衡服务器定义
upstreamasd{
server 192.168.222.131;
server 192.168.222.132;
}
#vhost虚拟主机-1
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_namewww.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。
proxy_pass http://asd;
#文件根目录,相对于nginx安装根目录路径
#root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
#indexindex.html index.htm;
}
#配置css,到root后面的路径,匹配css
location /css {
#文件根目录,相对于nginx安装根目录路径
root C:/Users/Administrator/Desktop/www;
indexindex.html index.htm;
}
#配置js,到root后面的路径,匹配js
location /js {
#文件根目录,相对于nginx安装根目录路径
root C:/Users/Administrator/Desktop/www;
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
}
2、正则配置
正则基本用法要有一些相识
https://img-blog.csdnimg.cn/direct/8f0975b4882a48fdba77457782237395.png
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#负载均衡服务器定义
upstreamasd{
server 192.168.222.131;
server 192.168.222.132;
}
#vhost虚拟主机-1
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_namewww.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#proxy_pass代理其它域名网址,proxy_pass和root只能二选一。
proxy_pass http://asd;
#文件根目录,相对于nginx安装根目录路径
#root C:/Users/Administrator/Desktop/www;
#默认页名称,访问先到访页面
#indexindex.html index.htm;
}
#~表示要使用正则了,*表示不区分大小写,|隔开今写多个
location ~*/(css|js|img) {
#这三个静态文件夹css、js、img,要在下面的路径里
root C:/Users/Administrator/Desktop/www;
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
}
十、UrlRewrite
1、参数详情
地址重写,用户得到的都是经过处理后的URL地址。
#样例
rewrite ^/(+).html$ /index.jsp?pageNum=$1 break; https://img-blog.csdnimg.cn/direct/2649c29ee4974004b84b38e439c15646.png
rewrite <regex> <replacement> ;
关键字 正则 替换内容 flag标志
关键字:关键字rewrite不能改变
正则:正则表达式语句进行规则匹配
替换内容:将正则匹配的内容更换成replacement
flag标志阐明:
1、last
本条规则匹配完成后,继续向下匹配新的location URI规则
2、break
本条规则匹配完成即制止,不再匹配背面的任何规则
3、redirect
返回302暂时重定向,浏览器地址会显示跳转后的URL地址
4、permanent
返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
2、nginx.conf配置
https://img-blog.csdnimg.cn/direct/5193c61d56504f06a3c992b8fd29320c.png
#默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
events {
#单个业务进程可接受连接数
worker_connections1024;
}
http {
#引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
include mime.types;
#如果mime类型没匹配上,默认使用二进制流的方式传输。
default_typeapplication/octet-stream;
#使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile
sendfile on;
#保持链接时间
keepalive_timeout65;
#负载均衡服务器定义
upstreamasd{
server 192.168.222.131;
server 192.168.222.132;
}
#vhost虚拟主机-1
server {
#监听端口号
listen 80;
#主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
server_namewww.lingran.website;
#匹配路径url,样例:http://nginx.org/en/download.html
location / {
#样例
rewrite ^/(+).html$ /index.jsp?pageNum=$1 break;
proxy_pass http://asd;
}
#~表示要使用正则了,*表示不区分大小写,|隔开今写多个
location ~*/(css|js|img) {
#这三个静态文件夹css、js、img,要在下面的路径里
root C:/Users/Administrator/Desktop/www;
indexindex.html index.htm;
}
#服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html
error_page 500 502 503 504/50x.html;
#报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹
location = /50x.html {
root html;
}
}
}
3、效果
https://img-blog.csdnimg.cn/direct/eb70ff311e7d4025b6864bd3c2e02cef.png
https://img-blog.csdnimg.cn/direct/12a636d388dc445090be9e5f5d1c0fde.png
十一、报错
1、 OpenEvent("Global\ngx_reload_3220")
https://img-blog.csdnimg.cn/direct/6da2bd70946e4a12b06d427e46e3f23b.png
nginx: OpenEvent("Global\ngx_reload_3220") failed (2: The system cannot find the file specified) 命令窗口权限不足,以管理员权限打开命令窗口实行即可
现在这到这了
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]