Nginx服务器入门

81 阅读3分钟

Nginx是什么?

“Nginx 是一款轻量级的 HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的 IO 性能,时常用于服务端的反向代理负载均衡。”

HTTP服务器:负责处理和响应用户要求

基本操作指令:

1、安装:

brew install nginx

2、启动:

启动 Nginx:

sudo nginx 或 sudo brew services start nginx

停止 Nginx:

sudo nginx -s stop 或 sudo brew services stop nginx

热重启 Nginx:

sudo nginx -s reload

强制停止 Nginx:

sudo pkill -9 nginx

Master-Worker模式

启动Nginx后,在80端口启动了Socket服务进行监听,涉及到了Master进程和Worker进程

nginx1.png

Master进程:读取并验证配置文件Nginx.conf,管理worker进程

Worker进程:维护线程,处理连接和请求,worker进程的个数由配置文件决定

修改配置:

常用的几个文件路径:

  • /usr/local/etc/nginx/nginx.conf (nginx配置文件路径)

  • /usr/local/var/www (nginx服务器默认的根目录)

  • /usr/local/Cellar/nginx/1.17.9 (nginx的安装路径)

  • /usr/local/var/log/nginx/error.log (nginx默认的日志路径)

server{ } 其实是包含在 http{ } 内部的。每一个 server{ } 是一个虚拟主机(站点)。

nignx2.png

4大应用:

  1. 动静分离,给应用服务器减轻压力,将后台API接口服务化,前后端代码分开并行开发部署
  2. 反向代理,保障应用服务器的安全(增加了一层代理)(代理的是服务器端,正向代理的是客户端)
  3. 负载均衡
  4. 跨域

动静分离:

Nginx将收到的请求分为动态请求和静态请求:

静态请求直接从nginx所设定的根目录路径去取对应的资源

动态请求转发给后台(应用服务器,如Tomcat)去处理

nginx3.png

反向代理:

浏览器或其他终端向nginx请求,具体怎么拿到的内容浏览器并不知道。

如下:向nginx请求localhost:8080,请求将被转发到8000端口

nginx4.png

负载均衡:

nginx可以将接收到的客户端请求“均匀”分配到集群中所有的服务器上,并会定期轮询向集群中的所有服务器发送健康检查请求,一旦某台服务器异常,

之后代理进来的客户端请求将不会被发送到该服务端上

nignx5.png

跨域:

前端调用后台服务时,通常会遇到 No 'Access-Control-Allow-Origin' header is present on the requested resource的错误,这是因为浏览器的同源策略拒绝了我们的请求。

同源:域名,协议,端口相同

对于线上请求只需要更改对应的proxy_pass:http://目标地址

HTTP响应头字段:

Access-Control-Allow-Origin :  指定了该响应的资源与给定的origin共享

*:允许任何来源的代码

<origin>: 只能指定一个来源URI,允许从该来源的请求代码访问资源

Access-Control-Allow-Header : 用于指示在实际请求期间可以使用哪些HTTP标头

Access-Control-Allow-Methods : 指示在特定端点上允许哪些HTTP方法用于跨域请求

nginx6.png

由于Access-Control-Allow-Origin配置一个域名,若想要配置多个域名白名单跨域的时候,可以设置一个变量cors_origin来存储需要跨域的白名单,在server中的配置为:

nginx7.png

nginx8.jpeg