Windows 服务器Nginx 下载、部署、配置流程(图文教程)
不定期更新
目录
一、下载Nginx安装包
二、上传安装包
三、启动Nginx
四、Nginx常用命令
五、Nginx(最小)配置详解
六、Nginx(基础)配置详解
七、反向代理
八、负载均衡
九、动静分离
十、报错
一、下载Nginx安装包
四个网址,根据自己的情况选择,我是用Nginx开源版的。
1、下载网址
1)Nginx开源版
nginx news
http://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安装包


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

三、启动Nginx
1、双击nginx.exe启动
双击后窗口会一闪而过。
2、查看是否启动成功


3、访问默认页面确认
先查看服务器ip



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

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

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

添加入站规则

允许通过80端口访问




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

四、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文件夹路径下


命令启动并查看版本信息

五、Nginx(最小)配置详解

这是一个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

访问IP地址,也能成功访问

六、Nginx(基础)配置详解
1、域名解析
域名解析是为了后面 ,进行域名配置时 ,进行练习。
1)购买域名解析(要花点钱)
建议用这个,可以熟悉一下,后面自己有服务器了,也还可以用,不想花钱的,可以选下面第2个
域名注册_域名查询_域名申请_域名购买_域名续费_国际域名-万网-阿里云品牌 (aliyun.com)
https://wanwang.aliyun.com/domain/?spm=5176.100251.111252.18.1cb84f15FEfsCm在阿里云官网购买一个域名注册(购买要实名认证的)

选一个便宜的购买就行,购买后一年有效期。
购买后到域名控制台配置




测试是否成功,ping一下域名。因为是虚拟机,只有在自己电脑上才能ping到,想在互联上访问,就要购买一个服务器,用服务器ip做域名解析。
如果ping不到,可能是防火墙拦截了,记得关一下防火墙

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

2)自己电脑配置hosts解析(免费)
因为是虚拟机,所以解析后只能在自己电脑上访问。
在自己电脑c盘上搜索hosts,找到并到该路径下。
#一般都在这路径下
C:\Windows\System32\drivers\etc


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


打开命令窗口,ping一下,看能不能通。
2、同一IP用不同端口访问不同页面
1)桌面新建两个文件夹
这两个文件用来放两个不同html页面

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


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

#默认为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

5)访问地址测试
IP后面加端口,ip:888,ip:899。
注意防火墙,开通一下端口,要么直接关闭防火墙。这为了方便就直接关闭防火墙了。


3、同一IP同一端口用不同域名访问不同页面
1)html页面文件夹还是用上面那两个
2)nginx.conf代码
端口号改回80,更改域名,根据域名前缀来匹配。
也可不更改端口,域名后加上端口,即可访问。

#默认为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

4)访问地址测试
域名直接访问,端口如果不是80要加上端口号。
因为配置域名解析的时候是配置解析全部的,所以除了第二个vhost虚拟主机-2的配置的aaa.lingran.website域名会到第二个页面,其他的域名默认到第一个页面即vhost虚拟主机-1的页面。
如果想其他域名默认到vhost虚拟主机-2的页面,可将域名改为通配符 *.lingran.website ,。这样除了www.lingran.website会到vhost虚拟主机-1的页面,其他的都到vhost虚拟主机-2的页面。
匹配为顺序精准匹配→域名后缀通配符匹配→域名前缀通配符匹配→正则匹配,匹配到则停止



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

正向代理的代理服务器在客户端,请求是主动要求被代理的。正向代理服务器看不到真正的客户端。
2、反向代理nginx.conf代码配置
proxy_pass配置,代理b站和百度这两个网址。

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

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



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





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

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



3、修改新增的两台服务nginx.conf配置
1)新增的两台服务器配置
一个台服务器配一个server就行,记得修改一下路径,让两个服务器的页面不一样。


#默认为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。


4、原服务器配置负载均衡
1)自动轮询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;#负载均衡服务器定义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,能轮流访问到两个新增服务器的页面


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

#默认为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
#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
#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、普通配置

#默认为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、正则配置
正则基本用法要有一些了解

#默认为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;

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配置

#默认为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、效果


十一、报错
1、[error] OpenEvent("Global\ngx_reload_3220")

nginx: [error] OpenEvent("Global\ngx_reload_3220") failed (2: The system cannot find the file specified)
命令窗口权限不足,以管理员权限打开命令窗口执行即可
目前这到这了
相关文章:
Windows 服务器Nginx 下载、部署、配置流程(图文教程)
不定期更新 目录 一、下载Nginx安装包 二、上传安装包 三、启动Nginx 四、Nginx常用命令 五、Nginx(最小)配置详解 六、Nginx(基础)配置详解 七、反向代理 八、负载均衡 九、动静分离 十、报错 一、下载Nginx安装包 四…...
基于Redis实现共享session登录
搭配食用:Redis(基础篇)-CSDN博客 项目实现前的 Mysql中的表: 表说明tb_user用户表tb_user_info用户详情表tb_shop商户信息表tb_shop_type商户类型表tb_blog用户日记表(达人探店日记)tb_follow用户关注表tb_voucher优…...
shell函数的定义
shell函数的定义 定义:将命令序列按照格式写在一起.格式指的是函数的固定格式 作用:方便重复使用,还可以做成函数库,集中在一起,随时可以传参调用,大的工程分割成小的模块,提高代码的可读性. 函数的格式 vim hanshu1.shfunction shopping {命令序列}shopping () {命令…...
vue部署宝塔nginx配置(获取用户ip地址、反代理访问api接口、websocket转发)
以下配置为我自己的需求,因人而异,如果只是单纯的前端非交互页面,可以不用修改配置。 代码及注释,如下: #解决vue-router设置mode为history,去掉路由地址上的/#/后nginx显示404的问题location / {proxy_htt…...
Jenkins教程-3-github自动化测试任务构建
上一小节我们学习了Jenkins在windows和mac系统上安装搭建环境的方法,本小节我们讲解一下Jenkins构建github自动化测试任务的方法。 接下来我们以windows系统为例,讲解一下构建实际自动化测试任务的具体步骤。 安装git和github插件 点击进入Jenkins插件…...
0元体验苹果macOS系统,最简单的虚拟机部署macOS教程
前言 最近发现小伙伴热衷于在VMware上安装体验macOS系统,所以就有了今天的帖子。 正文开始 首先,鉴于小伙伴们热衷macOS,所以小白搜罗了一圈macOS系统,并开启了分享通道。 本次更新的系统版本是: macOS 10.13.6 ma…...
Codeforces Round 946 (Div. 3) E. Money Buys Happiness
m m m个月,每个月月底发 x x x的薪水,也就是第 i i i个月只能用前 i − 1 i-1 i−1个月挣的钱,而不能用这个月挣的钱。第 i i i个月花费 c [ i ] c[i] c[i]的薪水能获得 h [ i ] h[i] h[i]的快乐度,问最多能获取的快乐度是多少。 …...
Git记录 上传至Gitee
1.GitHub拉去的代码需要上传至自己的Gitee需要清除原有remote服务器信息 查看原始远程服务器信息,后删除远程服务器信息 git remote -v git remote rm origin 2.Gitee新建软件仓库 法1)不用初始化仓库,初始化会自动生成.git。如果本地.git…...
笔记-前端
URL 输入到渲染的过程 域名解析,找到服务地址 构建 TCP 连接,若有 https,则多一层 TLS 握手, 特殊响应码处理 301 302 解析文档 构建 dom 树和 csscom 生成渲染树:从DOM树的根节点开始遍历每个可见节点,对于…...
事务AOP
事物管理 事务管理是指对一系列数据库操作进行管理,确保这些操作要么全部成功执行,要么在遇到错误时全部回滚,以维护数据的一致性和完整性。在多用户并发操作和大数据处理的现代软件开发领域中,事务管理已成为确保数据一致性和完…...
RAM和ROM
1,RAM和ROM区别 RAM和ROM都是由来存储的,比如CPU缓存,电脑和手机内存等属于RAM,而固态硬盘,U盘,手机的128G,256G存储空间等都属于ROM。他们的最主要区别是RAM在断电后存储数据就没有了,而ROM在断电后存储数…...
聊聊系统架构之负载均衡优化实践
一、写在前面 最近在进行线上监控检查时,我遇到了两个超出预期的案例。首先,网关层的监控数据与应用实际监控数据存在不一致性,尤其是max有较大的差异,详见如下图。其次在某个应用中,通过httpclient请求某域名时发现只…...
代码规范性思考
表命名和设计 业务模块前缀;下划线分隔,体现业务含义;数据库字符集、字段名、类型、长度、默认值;一对一、一对多、多对多建表;注释清晰;良好的索引; 接口文档 swagger增强工具swagger-boots…...
TestProject Python SDK入门
2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客跳槽涨薪的朋友们有福了,今天给大家推荐一个软件测试面试的刷题小程序。编辑https://…...
服务器数据恢复—EMC Isilon存储中被误删的虚拟机数据恢复案例
服务器存储数据恢复环境: EMC Isilon S200集群存储,共三个节点,每节点配置12块SATA硬盘。 服务器存储故障: 工作人员误操作删除虚拟机,虚拟机中数据包括数据库、MP4、AS、TS类型的视频文件等。需要恢复数据的虚拟机通…...
华为安全Security认证,你了解多少?
华为安全Security 认证包含HCIA-Security, HCIP-Security,HCIE-Security。HCIA-Security 掌握中小型网络信息安全基础知识与相关技术(华为防火墙技术、加解密技术、PKI 证书体系等),具备搭建小型企业信息安全网络的能力,实现中小企…...
自动驾驶规划-RTT* 算法 【免费获取Matlab代码】
目录 1.算法原理3.结果展示4.参考文献5.代码获取 1.算法原理 RRT(Rapidly-Exploring Random Trees) 快速随机扩展树,是一种单一查询路径规划算法。RRT 将根节点作为搜索的起点,然后通过随机撒点采样增加叶子节点的方式,生成一个随机扩展树&a…...
shell编程中的运算符的讲解
在Linux操作系统中也可以使用expr来进行一些数值的运算,expr接受表达式作为参数,并打印计算结果。 对于某些复杂的表达式或早期不支持内嵌算术表达式的Shell环境,expr 仍然是一个可行的选择。 如上图所示,是使用变量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 主要包括以下五部分,经常用到的是 store、state、getters、actions 以下使用说明,注意事项,仅限于 vue3 setup 语法糖中使用,若使用选项式 API 请直接查看官方文档: 一、前言: pinia 是为了探索 vu…...
MATLAB实战:如何用最小二乘法搞定系统辨识(附完整代码)
MATLAB实战:最小二乘法在系统辨识中的工程应用指南 在工业控制、信号处理等领域,系统辨识是建立数学模型的关键步骤。想象一下,当你面对一组输入输出数据,却不知道背后的系统规律时,最小二乘法就像一把瑞士军刀&#x…...
微信聊天记录数据备份与隐私保护完全指南:本地存储与聊天记录管理新方案
微信聊天记录数据备份与隐私保护完全指南:本地存储与聊天记录管理新方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_…...
阿里小云KWS模型在STM32平台上的轻量化部署
阿里小云KWS模型在STM32平台上的轻量化部署 1. 为什么要在STM32上跑语音唤醒 很多开发者第一次听说要在STM32这种资源受限的微控制器上部署语音唤醒模型时,第一反应往往是:这可能吗?毕竟STM32通常只有几百KB的Flash和几十KB的RAM࿰…...
GLM-Image创新应用:基于算法的艺术风格探索
GLM-Image创新应用:基于算法的艺术风格探索 当AI算法遇见艺术创作,会碰撞出怎样的火花?GLM-Image正在重新定义数字艺术的可能性边界。 1. 引言:算法与艺术的完美融合 在数字艺术创作领域,传统工具往往需要艺术家具备深…...
5个行业颠覆场景:用PptxGenJS实现办公自动化效率革命
5个行业颠覆场景:用PptxGenJS实现办公自动化效率革命 【免费下载链接】PptxGenJS Create PowerPoint presentations with a powerful, concise JavaScript API. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS PptxGenJS是一款基于JavaScript的开源…...
从草图到文档:我用这5个Miro/PlantUML模板,高效搞定团队架构设计评审
从草图到文档:5个高效架构设计模板与团队协作实战指南 在敏捷开发环境中,架构设计往往陷入两难困境——既要快速响应需求变化,又要保证设计文档的准确性与可维护性。Tech Lead们经常面临这样的场景:在白板前与团队激情讨论出的架构…...
高精度运放在电流传感器中的设计与应用
高精度运算放大器在电流传感器中的应用设计1. 电流传感器概述1.1 电流传感器类型与特性电流传感器是用于测量电路电流的关键元件,根据测量原理主要分为以下几种类型:传感器类型测量范围典型应用场景分流电阻式μA~100A电池监测、电机控制磁感应式10mA~1k…...
GHelper技术解析:华硕笔记本轻量级性能优化工具架构与配置指南
GHelper技术解析:华硕笔记本轻量级性能优化工具架构与配置指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models …...
3大革新性功能!VoiceFixer全方位语音修复工具让受损音频焕发新生
3大革新性功能!VoiceFixer全方位语音修复工具让受损音频焕发新生 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否遇到过珍贵录音因噪音模糊不清的窘境?是否因会议录音质…...
Umi-OCR:彻底解决你的文字识别难题,这3大功能让你效率翻倍!
Umi-OCR:彻底解决你的文字识别难题,这3大功能让你效率翻倍! 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址…...
