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

news2024/11/28 21:52:25

不定期更新

目录

一、下载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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
    #vhost虚拟主机
    server {
        #监听端口号
        listen       80;
        #主机名\域名
        server_name  localhost;
        #匹配路径url,样例:http://nginx.org/en/download.html
        location / {
            #文件根目录,相对于nginx安装根目录路径
            root   html;
            #默认页名称,访问先到访页面
            index  index.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


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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       888;
        #主机名\域名
        server_name  localhost;
        #匹配路径url,样例:http://nginx.org/en/download.html
        location / {
            #文件根目录,相对于nginx安装根目录路径
            root   C:/Users/Administrator/Desktop/web;
            #默认页名称,访问先到访页面
            index  index.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_name  localhost;
        #匹配路径url,样例:http://nginx.org/en/download.html
        location / {
            #文件根目录,相对于nginx安装根目录路径
            root   C:/Users/Administrator/Desktop/www;
            #默认页名称,访问先到访页面
            index  index.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

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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       80;
        #主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
        server_name  www.lingran.website;
        #匹配路径url,样例:http://nginx.org/en/download.html
        location / {
            #文件根目录,相对于nginx安装根目录路径
            root   C:/Users/Administrator/Desktop/www;
            #默认页名称,访问先到访页面
            index  index.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_name  aaa.lingran.website;
        #匹配路径url,样例:http://nginx.org/en/download.html
        location / {
            #文件根目录,相对于nginx安装根目录路径
            root   C:/Users/Administrator/Desktop/web;
            #默认页名称,访问先到访页面
            index  index.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

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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       80;
        #主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
        server_name  www.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;
            #默认页名称,访问先到访页面
            #index  index.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_name  aaa.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;
            #默认页名称,访问先到访页面
            #index  index.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

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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       80;
        #主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
        server_name  localhost;
        #匹配路径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;
            #默认页名称,访问先到访页面
            index  index.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。

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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
	
	#负载均衡服务器定义
	upstream  asd{
	server 192.168.222.131;
	server 192.168.222.132;
	}
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       80;
        #主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
        server_name  www.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;
            #默认页名称,访问先到访页面
            #index  index.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,能轮流访问到两个新增服务器的页面

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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
	
	#upstream负载均衡服务器定义,weight权重分配
	upstream  asd{
	server 192.168.222.131 weight=8;
	server 192.168.222.132 weight=2;
	}
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       80;
        #主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
        server_name  www.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;
            #默认页名称,访问先到访页面
            #index  index.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权重分配
	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的比值最小者为下一个处理请求的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、普通配置

 

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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
	
	#负载均衡服务器定义
	upstream  asd{
	server 192.168.222.131;
	server 192.168.222.132;
	}
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       80;
        #主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
        server_name  www.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;
            #默认页名称,访问先到访页面
            #index  index.html index.htm;
        }
        #配置css,到root后面的路径,匹配css
        location /css {
            
            #文件根目录,相对于nginx安装根目录路径
            root   C:/Users/Administrator/Desktop/www;
            index  index.html index.htm;
        }
        #配置js,到root后面的路径,匹配js
        location /js {
            
            #文件根目录,相对于nginx安装根目录路径
            root   C:/Users/Administrator/Desktop/www;
            index  index.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、正则配置

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

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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
	
	#负载均衡服务器定义
	upstream  asd{
	server 192.168.222.131;
	server 192.168.222.132;
	}
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       80;
        #主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
        server_name  www.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;
            #默认页名称,访问先到访页面
            #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.html
        error_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拷贝,直接传输数据。未开启sendfile
    sendfile        on;
    #保持链接时间
    keepalive_timeout  65;
	
	#负载均衡服务器定义
	upstream  asd{
	server 192.168.222.131;
	server 192.168.222.132;
	}
   
    #vhost虚拟主机-1
    server {
        #监听端口号
        listen       80;
        #主机名\域名,空格后面可以再接一个域名,支持正则,不同域名后缀也可以。
        server_name  www.lingran.website;
        #匹配路径url,样例:http://nginx.org/en/download.html
        location / {
            #样例
            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.html
        error_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)

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

 

目前这到这了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1825229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文阅读笔记:Cross-Image Relational Knowledge Distillation for Semantic Segmentation

论文阅读笔记&#xff1a;Cross-Image Relational Knowledge Distillation for Semantic Segmentation 1 背景2 创新点3 方法4 模块4.1 预备知识4.2 跨图像关系知识蒸馏4.3 Memory-based像素到像素蒸馏4.4 Memory-based像素到区域蒸馏4.5 整体框架 5 效果 论文&#xff1a;http…

chatgpt的命令词

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

Pycharm社区版搭建Django环境及Django简单项目、操控mysql数据库

Web应用开发&#xff08;Django&#xff09; 一、配置Django环境 1、先通过Pycharm社区版创建一个普通的项目 2、依次点击”file"-->"Settings" 3、点击"Project:项目名"-"Python Interpreter"-"号" 4、在搜索框输入要安装的…

解决方案︱视频孪生智慧高速解决方案

系统概述 在交通强国战略的指导下&#xff0c;我国政府高度重视以数字化为核心的智慧高速公路建设与发展。2023年9月&#xff0c;交通运输部印发了《交通运输部关于推进公路数字化转型加快智慧公路建设发展的意见》&#xff0c;强调到2035年&#xff0c;全面实现公路数字化转型…

高清视频+AI算法,EasyCVR视频智能监控方案打造无死角吸烟行为检测

一、背景与意义 1、吸烟危害&#xff1a;吸烟不仅有害健康&#xff0c;而且在特定场所带来的安全隐患极大。据统计&#xff0c;全年火灾事故中有五分之一系抽烟引起&#xff0c;引发的人员伤亡和财产损失巨大。 2、政策与法规&#xff1a;为了保护公共安全&#xff0c;消除消…

机器学习:人工智能的子领域之一

引言 人工智能&#xff08;AI&#xff09;已经成为现代科技的重要组成部分&#xff0c;推动了许多领域的创新与进步。在人工智能的诸多子领域中&#xff0c;机器学习&#xff08;ML&#xff09;无疑是最关键和最具影响力的一个。机器学习通过自动分析和学习数据中的模式&#x…

大数据技术学习回顾01-大数据的特点、技术体系(三驾马车)

参考来源&#xff1a; 极客时间专栏&#xff1a;从0开始学大数据&#xff0c;作者&#xff1a;李智慧 大数据技术整体概览 大数据技术体系 大数据处理的主要应用场景包括数据分析、数据挖掘与机器学习。数据分析主要使用 Hive、Spark SQL 等 SQL 引擎完成&#xff1b;数据挖…

【Python系列】Python 中的日期和时间处理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

SSM家乡旅游网-计算机毕业设计源码04802

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;SSM家乡旅游网当然也不能排除在外。SSM家乡旅游网是以实际运用为开发背景&#xff0c;运用软件工程开发方法&#xff0c…

U-Mail邮件系统全面支持信创国产化,打造自主可控的邮件系统

长期以来&#xff0c;中国IT产业的底层架构和标准多由国际巨头所主导&#xff0c;这不仅限制了本土技术的创新发展&#xff0c;同时也给国家安全带来了潜在的挑战。为了应对这一现状&#xff0c;我国正逐步构建起一套独立且安全的IT生态系统&#xff0c;旨在实现技术的自主可控…

论文学习day01

1.自我反思的检索增强生成&#xff08;SELF-RAG&#xff09; 1.文章出处&#xff1a; Chan, C., Xu, C., Yuan, R., Luo, H., Xue, W., Guo, Y., & Fu, J. (2024). RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation. ArXiv, abs/2404.00610. 2.摘…

快速上手SpringBoot

黑马程序员Spring Boot2 文章目录 1、SpringBoot 入门程序开发1.1 创建一个新的项目 2、浅谈入门程序工作原理2.1 parent2.2 starter2.3 引导类2.4 内嵌tomcat 1、SpringBoot 入门程序开发 1.1 创建一个新的项目 file > new > project > empty Project 创建新模块&a…

如何在 Vue 3 中使用 vue3-print-nb 实现灵活的前端打印

你好&#xff0c;我是小白Coding日志&#xff0c;一个热爱技术的程序员。在这里&#xff0c;我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客&#xff0c;一起在技术的世界里探索前行吧&#xff01; 前言 在前端开…

Linux中Web服务器配置和管理(Apache)

文章目录 一、WEB服务器介绍1.1、WEB服务器概述1.2、WEB服务器的发展历史1.3、WEB服务器的优点与缺点1.4、WEB服务器的工作流程 二、Apache介绍2.1、Apache是什么2.2、Apache的发展史与应用场景2.3、Apache的特点2.4、Apache的工作原理2.5、Apache的模块 三、安装使用Apache服务…

iOS 18 中全新 SwiftData 重装升级,其中一个功能保证你们“爱不释手”

概览 在最新的 WWDC 2024 中&#xff0c;苹果对多个系统框架都做了重量级的功能升级。这怎么能够少了 SwiftData 这位“后起之秀”呢&#xff1f; 万象更新的 iOS 18 为 SwiftData 增加了全新的唯一性、自定义数据仓库、富表达式以及字段索引等超赞功能。 在本篇博文中&#…

论文中引用网页链接的简单操作

一、参考资料 中文论文或者申请书中网页新闻引用格式 自制网页&#xff1a;在论文中快速引用网页链接 二、相关介绍 1. 常用文献类型用单字母标识 学术论文参考文献中文献类型字母标识 常用文献类型用单字母标识&#xff0c;具体如下&#xff1a; &#xff08;1&#xf…

自动控制理论---线性时不变系统的单位脉冲响应

1、实验设备 PC计算机1台&#xff0c;MATLAB软件1套。 2.实验目的&#xff1a; 学习并理解线性时不变系统的单位脉冲响应的计算方法。掌握MATLAB编程&#xff0c;计算整个系统的单位脉冲响应。 3.实验原理说明&#xff1a; 单位脉冲响应是指在输入信号为单位脉冲序列时&am…

【Java】内部类、枚举、泛型

目录 1.内部类1.1概述1.2分类1.3匿名内部类(重点) 2.枚举2.1一般枚举2.2抽象枚举2.3应用1&#xff1a;用枚举写单例2.4应用2&#xff1a;标识常量 3.泛型3.1泛型认识3.2泛型原理3.3泛型的定义泛型类泛型接口泛型方法 3.4泛型的注意事项 1.内部类 1.1概述 内部类&#xff1a;指…

高分文章发文圣体!一周80%二区以上 | GBD数据库周报(6.05~6.11)

全球疾病负担&#xff08;GBD&#xff09;是迄今为止规模最大、最全面的一项研究&#xff0c;旨在量化不同地区和不同时期的健康损失&#xff0c;从而改善卫生系统并消除差异。 该研究由华盛顿大学健康指标与评估研究所 (IHME) 牵头&#xff0c;是一项真正的全球性研究&#xf…

移动UI:小小工作台,竟然别有洞天(N多样式),上图了。

设计移动UI的工作台页面时&#xff0c;可以考虑以下几个方面&#xff1a; 布局设计&#xff1a;首先确定页面的布局&#xff0c;可以使用单栏、双栏或九宫格等等布局方式。布局应该简洁明了&#xff0c;方便用户快速找到需要的功能模块。功能模块&#xff1a;根据用户需求确定需…