目录
安装
win下
前往这里下载
如果启动后报错:
nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
我们修改配置文件即可,看图
我这里改为了 30
OK,再次使用命令行启动!,成功!
在浏览器输入localhost,如果出现这个页面,说明你没有加上端口号,加上即可
加上端口号即可
我的最终地址
入门
1. 什么是nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,特点是占有内存少,并发能力强,事实上
nginx的并发能力在同类型的网页服务器中表现较好。
Nginx专为性能优化而开发,性能是其重要的考量,实现上非常注重效率,能经受高负载的考验,能支持高达
50000个并发连接数2. Nginx的作用
1: 静态服务器
在我们前后端分离的项目中 我们的前端项目开发完毕之后,也是需要发布到一个服务器上,供用户访问
此时
就需要用到nginx
2: 虚拟主机:
我们一个服务器可以模拟多个虚拟主机,虽然访问的链接不同,但是都表示一个主机 所以访问的内
容是一致 的
3: 反向代理:
nginx可以作为反向代理服务器,客户端发送http请求 访问的是nginx这个反向代理服务器,反
向代理 服务器nginx会选择目标服务器,最终完成请求 获取数据
4: 负载均衡:
我们部署应用,项目运行在tomcat上 一个tomcat的并发访问默认200 手动调并发数量 最多
600-700的并发
当我们用户量比较大的时候 我们的项目要占用不同的端口部署多个,目的起到请求分流的效果,减
轻服务器 的压力,此时就需要负载均衡部署静态资源到ngnix
1 将需要的静态资源复制到nginx的html目录中
2 重启nginx,先终止,后启动
3 打开localhost:30即可看到部署的资源
配置文件
第一部分:全局块
主要会设置一些影响Nginx 服务器整体运行的配置指令
第二部分:Events块
worker_connections 1024;表示每个 worker process 支持的最大连接数
第三部分:Http块
这是Nginx服务配置中最频繁的部分,代理、缓存和日志定义等绝不多数功能和第三方模块的配置都在这
里。需要 注意的是:http 块也可以包括http全局块、server块。server 块又包含全局server块和
localtion块。我们看其中的root,指的是,我们静态资源的根目录,所以说有了这个,我们就可以让ngnix管理我们任意路径的静态资源了
部署外部资源到nginx
示例
1 复制外部静态资源的路径
2 修改配置文件中的root,为我们刚刚复制的路径
多个虚拟主机配置与域名映射
虚拟主机:
我们一个服务器可以模拟多个虚拟主机,虽然访问的链接不同,但是都表示一个主机 所以访问的内容是一致 的,nginx的一个server标签就是一个虚拟主机 我们配置多个server标签就可以代表多个主机
域名解析
配置多个虚拟主机
1 打开配置文件,将server完整的复制一份
2 更改server-name为自己定义的网址,我的是www.scm.com
3 将复制的server的完整内容放在server的下面,同时再次执行步骤2
我这里用的是www.zgt.com
4 配置域名映射的ip地址
在资源管理器输入以下目录,找到hosts
C:\Windows\System32\drivers\etc
先修改权限
修改失败的没办法,我也是,呜呜呜,
知道思路就可以了!!!
等一下,有后续了!,可以通过vscode修改!!!,离谱!
用vscode打开,那个文件,然后直接修改,点保存,方框地方会出现提示是否覆盖,我们选覆盖即可!
配置反向代理
1 反向代理是什么?
概念: Nginx作为反向代理服务器接收来自客户端的请求,并将请求转发给后端的真实服务器集群中的一台。
典型代表:负载均衡 特点: 主要用于服务器进群分布式部署的情况下,隐藏了服务器的真实信息
2 springboot使用反向代理
@RestController @RequestMapping("/cs") public class CsController { @GetMapping("/nginx") public String userNginx(){ return "hello,world!"; } }
3 修改host系统文件,将我们的127.0.0.1输入,然后后面是我们自定义的域名
4 更改nginx配置文件, 替换为我们需要更换的地址,并启动neginx
5 成功截图,如果不成功的还请打开无痕模式再尝试
这样我们就可以使用我们定义的server_name去访问内容了,同时也隐藏了真实的ip了