记nginx相关资料

记nginx相关资料

容我来日更新,将其填补完善,本篇文章只适用于win10系统,我的电脑就是win10。
服务器代理,就是使用其他网址来访问服务,前端调用后端放在服务器上的服务,写明固定的IP地址的端口号,nginx代理后,可以访问真实的IP地址和端口号。
例如服务器的IP和端口号:192.168.0.222:8080
前端调用的指定的IP地址和端口号可以是:192.168.0.111:8082,其中使用到服务器代理
浏览器访问IP和端口号可以是:192.168.0.123:8085,这里也使用到nginx代理
具体是不是这样,我没有试过,中间有坑也说不定

nginx下载安装

思路:上官网,找稳定版本,点击下载,解压文件

1、上官网:http://nginx.org/en/download.html
2、找稳定版本:Stable version
3、点击下载:nginx/Windows-1.24.0
4、解压。
注意:
	文件下载速度挺慢的,但是绝对是可以下载成功的,也就1.67M。
	解压后的文件就可以正常使用;nginx文件路径不能存在中文。
	案例:D:\Program\Work\Nginx\nginx-1.24.0

nginx的主要功能

Nginx是一款开源的高性能HTTP和反向代理服务器。它具有轻量级、高并发处理能力和低内存消耗等特点,被广泛用于构建静态资源服务器、负载均衡器、反向代理、缓存服务器等。以下是Nginx的一些主要功能:

  • HTTP服务器:Nginx可以作为静态资源服务器,快速地响应HTTP请求。它支持静态文件的服务,包括HTML、CSS、JavaScript、图片等。通过配置文件,可以轻松地设置虚拟主机和URL重写规则。
  • 反向代理:Nginx可以作为反向代理服务器,将客户端的请求转发给后端的多个服务器。通过负载均衡算法分发请求,可以提高系统的可用性和性能。
  • 负载均衡:Nginx支持多种负载均衡算法,如轮询、IP哈希、最少连接等。它可以将来自客户端的请求均匀地分发给后端的多个服务器,实现负载均衡,提高系统的处理能力和可靠性。
  • 动态内容缓存:Nginx可以缓存动态生成的内容,减轻后端服务器的压力。它支持根据URL、HTTP请求头和响应头等条件进行缓存,还可以设置缓存时间和缓存大小。
  • SSL/TLS加密:Nginx支持SSL/TLS协议,可以提供安全的HTTPS服务。通过配置SSL证书和相关参数,可以实现数据的加密传输,保护用户的隐私和数据安全。
  • URL重写和重定向:Nginx可以根据特定的规则对URL进行重写和重定向。通过配置文件,可以实现URL的统一化和优化,提高网站的可用性和SEO效果。
  • 动态模块支持:Nginx支持动态模块,可以通过编写自定义模块来扩展其功能。这样可以满足特定业务需求,提供更加灵活和定制化的功能。

总之,Nginx是一款功能强大的服务器软件,它可以用于构建高性能、高可用性的Web服务。无论是作为HTTP服务器、反向代理、负载均衡器还是缓存服务器,Nginx都能够提供高效、稳定的服务。

HTTP服务器

主要的关键字有root、alias,区别在于路径映射以及地址的引用

  • 我这边只使用到了静态资源服务器,前端打包后的资源文件太大,有三四个G,放在后端资源文件夹里面,然后打成jar包,发现要么打包失败,要么打出的jar包无法使用,所以就用到了nginx,将前端打包好的dist文件放到nginx中的html目录下,然后稍加配置,然后就正常使用了。
root、alias使用结论
关键字root:
	不符合前缀要求时,默认html目录+网址url
		IP:port/xxx 相当于 html/xxx
	符合前缀要求时,是root下指定的文档目录+网址url
		IP:port/xxx 相当于 指定目录/xxx
	注意:
		此处的指定目录是和html同级的目录,其他目录尚未测试过
		
关键字alias:
	不符合前缀要求时,默认html目录+网址url,同root关键字看齐
		IP:port/xxx 相当于 html/xxx
	符合前缀要求时,是alias下指定的文档目录+网址url(去掉前缀)
		IP:port/前缀/xxx 相当于 指定目录/xxx,
	注意:
		此处的指定目录是和html同级的目录,其他目录尚未测试过
		此处的网址前缀只用于判断,不参与磁盘路径

两者区别:
	1、root对于路径而言,可以不加左斜杠“/”;alias则必须要加左斜杠“/”
	2、当网址不符合前缀要求时,都指定默认路径html/
	3、当网址符合前缀要求时,root映射的内容包含前缀,alias映射的内容不包含前缀
root、alias使用案例
##############################################################
server {
	listen       8081;
	server_name  localhost;

	location / {
		root   html;
	}  
}
案例:
	网址:localhost:8081/123.png  =>  磁盘:html/123.png
	网址:localhost:8081/12/123.png  =>  磁盘:html/12/123.png
	梳理:
		网址:localhost:8081/xxx  =>  磁盘:html/xxx
		=> ip:port/xxx 相当于 指定目录/xxx
##############################################################
server {
	listen       8079;
	server_name  localhost;

	location / {
		root   html/123;
	}  
}
案例:
	网址:localhost:8079/123.png  =>  磁盘:html/123/123.png
	网址:localhost:8079/12/123.png  =>  磁盘:html/123/12/123.png
	梳理:
		网址:localhost:8079/xxx  =>  磁盘:html/123/xxx
		=> ip:port/xxx 相当于 指定目录/xxx
##############################################################
server {
	listen       8082;
	server_name  localhost;

	location /123/ {
		root   demo;
	}  
}
案例:
	网址:localhost:8082/123.png  =>  磁盘:html/123.png
	网址:localhost:8082/12/123.png  =>  磁盘:html/12/123.png
	网址:localhost:8082/123/123.png  =>  磁盘:demo/123/123.png
	网址:localhost:8082/123/12/123.png  =>  磁盘:demo/123/12/123.png
	梳理:
		网址:localhost:8082/xxx  =>  磁盘:html/xxx
		=> ip:port/xxx 相当于 html/xxx
		网址:localhost:8082/123/xxx  =>  磁盘:demo/123/xxx
		=> ip:port/前缀/xxx 相当于 指定目录/前缀/xxx   => ip:port/xxx 相当于 指定目录/xxx
##############################################################
server {
	listen       8078;
	server_name  localhost;

	location /123/ {
		root   demo/456;
	}  
}
案例:
	网址:localhost:8078/123.png  =>  磁盘:html/123.png
	网址:localhost:8078/12/123.png  =>  磁盘:html/12/123.png
	网址:localhost:8078/123/123.png  =>  磁盘:demo/456/123/123.png
	网址:localhost:8078/123/12/123.png  =>  磁盘:demo/456/123/12/123.png
	梳理:
		网址:localhost:8078/xxx  =>  磁盘:html/xxx
		=> ip:port/xxx 相当于 html/xxx
		网址:localhost:8078/123/xxx  =>  磁盘:demo/456/xxx
		=> ip:port/前缀/xxx 相当于 指定目录/前缀/xxx   => ip:port/xxx 相当于 指定目录/xxx
##############################################################
# 测试alias中映射问题, IP:port/ 相当于 html/ 
server {
	listen	8083;
	server_name localhost;
	location / {
		alias demo/;
	}
}
案例:
	网址:localhost:8083/123.png  =>  磁盘:demo/123.png
	网址:localhost:8083/12/123.png  =>  磁盘:demo/12/123.png
	梳理:
		网址:localhost:8083/xxx  =>  磁盘:demo/xxx
		=> ip:port/xxx 相当于 指定目录/xxx
##############################################################
# 测试alias中映射问题, IP:port/ 相当于 html/12/
server {
	listen	8075;
	server_name localhost;
	location / {
		alias demo/12/;
	}
}
案例:
	网址:localhost:8083/123.png  =>  磁盘:demo/12/123.png
	网址:localhost:8083/123/123.png  =>  磁盘:demo/12/123/123.png
	梳理:
		网址:localhost:8083/xxx  =>  磁盘:demo/xxx
		=> ip:port/xxx 相当于 指定目录/xxx
##############################################################
server {
	listen	8084;
	server_name localhost;
	location /123/ {
		alias demo/;
	}
}
案例:
	网址:localhost:8084/123.png  =>  磁盘:html/123.png
	网址:localhost:8084/12/123.png  =>  磁盘:html/12/123.png
	网址:localhost:8084/123/123.png  =>  磁盘:demo/123.png
	网址:localhost:8084/123/12/123.png  =>  磁盘:demo/12/123.png
	梳理:
		网址:localhost:8078/xxx  =>  磁盘:html/xxx
		=> ip:port/xxx 相当于 html/xxx
		网址:localhost:8078/123/xxx  =>  磁盘:demo/xxx
		=> ip:port/前缀/xxx 相当于 指定目录/xxx   => ip:port/前缀/xxx 相当于 指定目录/xxx
		此处的网址前缀只用于判断,不参与磁盘路径(不参与文档目录)
##############################################################
server {
	listen	8076;
	server_name localhost;
	location /123/ {
		alias demo/12/;
	}
}
案例:
	网址:localhost:8076/123.png  =>  磁盘:html/123.png
	网址:localhost:8076/12/123.png  =>  磁盘:html/12/123.png
	网址:localhost:8076/123/123.png  =>  磁盘:demo/12/123.png
	网址:localhost:8076/123/456/123.png  =>  磁盘:demo/12/456/123.png
	梳理:
		网址:localhost:8076/xxx  =>  磁盘:html/xxx
		=> ip:port/xxx 相当于 html/xxx
		网址:localhost:8076/123/xxx  =>  磁盘:demo/12/xxx
		=> ip:port/前缀/xxx 相当于 指定目录/xxx   => ip:port/前缀/xxx 相当于 指定目录/xxx
		此处的网址前缀只用于判断,不参与磁盘路径(不参与文档目录)
##############################################################
location中正则表达式

说真的,我没怎么用过正则,此处后期补上


反向代理

SpringBoot项目

boot项目

##############################################################
server {
	listen	8088; 
	server_name localhost; 
	
	location / { 
	    proxy_next_upstream http_502 http_504 error timeout invalid_header;		
	    # 代理服务器
		proxy_pass http://127.0.0.1:8086; 
	}
}
使用:localhost:8088/xxx  相当于访问   localhost:8086/xxx
注意点:proxy_pass http://IP地址:端口号; 里面的IP地址可以根据需要来进行修改。
1、访问本地可以改成localhost或者127.0.0.1
2、访问其他电脑的服务可以改成其他电脑的IP地址。
##############################################################
server {
		listen	8889;
		server_name localhost;
		# 区别于下面对于静态资源文件的引用。
		location /xxx/ {
			proxy_next_upstream http_502 http_504 error timeout invalid_header;
			# 启用支持websocket连接
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";

		    # 设置nginx连接时长
		    proxy_connect_timeout 86400s;
            proxy_read_timeout 86400s;
            proxy_send_timeout 86400s;

			# 代理转发地址
			proxy_pass http://192.168.0.109:8888;
		}
		# 引用静态资源文件
		location / {
			root html\xxx\dist;
		}
		
	}
##############################################################
# 其他的一些配置我就不怎么会了,我只使用到了以上几点
一个server里面可以有多个location,但是他们的前缀内容各不相同
SpringMVC项目

jsp项目,这个是个老项目了,我已经忘了该怎么写了,此处后期补上


常见的报错

列举几个我以前遇到过的报错。
当然了,大部分的报告都可以通过查看日志来判断问题原因:有中文路径、有端口号重复、有分号“;”缺失、有关键字写错、找不到资源文件、找不到主机、……

1、当路径存在中文,运行失败,检查日志后发现报告:
	No mapping for the Unicode character exists in the target multi-byte code page
	解决方法一:nginx文件不存放在带有中文的路径下。这也是废话。
	解决方法二:使用nginx-1.24.0版本,新版本支持中文路径

2、没有网络时,运行失败,检查日志后发现报错:
	host not found in upstream "localhost"
	解决方法一:没有网络时运行失败,那有网络不就解决了吗。这是废话
	解决方法二:将 localhost 改为 127.0.0.1
		例如:	proxy_pass http://localhost:8086; 
				=>
				proxy_pass http://127.0.0.1:8086;

3、当一个服务里面有多个重复的前缀,运行失败,检查日志后发现抱错:
	duplicate location xxx
	解决方法一:将重复的location删掉。删掉肯定能跑,但是删掉了我用啥呢。
	解决方法二:将重复的前缀修改成其他名称。改名后,我前后端路径不都得改?
	解决方法三:一个server里面放一个location。这样需要使用多个端口号啊。
	啊毁灭吧,我想不到更好的解决方法了。

4、系统找不到指定的文件
	The system cannot find the file specified
	思路:文件找不到,要么静态资源文件路径没配置对,要么压根没有这个文件。
	解决方法一:添加缺失的文件。
	解决方法二:修改静态资源文件的映射路径。
	
暂时想不到了,以前遇到的问题都忘得差不多了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值