Nginx 入门教程(常用配置)

本文介绍了Nginx的基本概念,包括其作为HTTP服务器的特点、启动与停止方法,以及动静分离、反向代理和负载均衡的配置。重点讲解了如何利用Nginx实现服务代理和负载均衡,以提升系统性能和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

nginx 是一款http服务器或者web 服务器
web 服务器: 负责处理和响应用户请求, 一般成为 http 服务器, 如: apache, IIS, Nginx 
应用服务器: 存放和允许系统程序的服务器, 负责处理程序中的业务逻辑, 如: tomcat, weblogic, Jboss
一种轻量级的web 服务器
设计思想是事件驱动的异步非阻塞处理
占用内存少, 启动速度快, 并发能力强
使用c语言开发
扩展性好, 第三方插件非常多
广泛在互联网项目中应用

官方文档: https://blog.redis.com.cn/doc/

启动, 停止, 重新加载

nginx  # 启动
nginx -c nginx.conf  # 指定配置文件启动
nginx -s  stop # 停止
nginx -s  reload
kill -9  nginx(pid)  # 强制停止

配置文件简介


server {
  	# 当nginx接收到请求后, 会匹配配置中的server 模块
  	# 匹配方法就是将请求携带的host和port 去跟配置中的 server_name和listen进行匹配
  	listen  8080;
  	server_name localhost; # 定义虚拟主机匹配请求的主机名

  	location / {
    	  root html; # nginx 默认值
      	# 设定nginx 服务器返回的文件名
      	index index.html index.htm; # 先找根目录下的index.html, 如果没有则找 index.htm
  	}
}

* server{} 其实是在 http{} 内部, 一个server{} 是一个虚拟主机

动静分离

将网站静态资源与后台应用分开部署, 提高用户访问静态代码的速度,降低对后台应用访问
动静分离的一种做法是将静态资源部署在nginx 上, 后台项目部署到应用服务器上, 根据一定规则静态资源的请求
全部请求nginx 服务器, 达到动静分离的目的


api 接口服务化: 动静分离后, 后端应用更为服务化, 只需要通过提供api接口即可, 可以为多个功能模块甚至多个平台的功能
使用, 可以有效节省后端人力, 便于功能维护
前后端开发并行: 前后端只需要关心接口协议即可, 各自的开发相互不干扰, 并行开发, 并行自测, 有效的提高开发时间,也可以有效的减少联调的时间
减轻后端服务器压力, 提高静态资源访问速度: 后端不再将模块渲染为html 返回给用户端, 且静态服务器可以采用更为专业的技术
提供静态资源的访问速度
# 一个服务模块
server{
	listen 8080;
	server_name localhost;

  location / {
  	root html;
  	index index.html index.htm;
	}

	# 静态资源, 所有静态请求都转发给nginx, 存放目录为 www
	location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {	
    	root /home/www;  
	}

	# 动态请求匹配到 path 为list 的就转发到 8888端口处理
	location /list {
  	proxy_pass http://localhost:8888;  # 服务代理
	}
}

反向代理 (proxy_pass)

反向打理类似找代购帮你买东西(浏览器或其他终端向nginx请求), 你不需要管他去哪里买, 只要它能买到东西即可(浏览器或其他终端最终拿到了你想要的内容, 但具体从哪里拿到的这个过程不需要关心)

1. 保障应用服务器的安全 (增加一层代理, 可以屏蔽危险攻击, 方便控制权限)
2. 实现负载均衡
3. 实现跨域

配置

server {
  	listen 8080;
  	server_name localhost;

  	location / {
    	root html;
    	index index.html index.htm;
  	}

		proxy_pass http://localhost:8888; # 反向代理配置, 请求会转发到 8888端口
}

反向代理其实就是 nginx 请求 localhost:8888 跟请求 http://localhost:8888 是一样的效果

nginx 就是图中的proxy, 左边的3个 client 在请求时向nginx获取内容, 是感受不到 后面 3台 server 存在的
此时 proxy 就充当了 3个server 的反向代理

负载均衡 (upstream)

随着业务和用户的增长, 一台服务器以及不能满足系统需求了, 需要做服务器集群
在服务器集群中, nginx可以将接收到的客户端请求均匀的分配到这个集群中所有的服务器上

分摊服务器集群压力
保证客户端访问稳定性

此外, nginx 还带有健康检查,即服务器心跳检查功能, 会定期轮询向集群里所有服务器发送健康检查请求, 来检查集群中是否有服务器处于异常状态
一旦发现某台服务器异常, 那么在以后代理进来的客户端请求都不会发送到该服务器上, 直到健康检查发现该服务器恢复正常, 从而保证客户端访问的稳定性

配置

# 负载均衡: 设置 domain
upstream domain {
	server localhost:8888;
	server localhost:8889;
}

server {
	listen 8080;
	server_name localhost;

	location / {
    	# root html;
    	# index index.html index.htm;

  	proxy_pass http://domain; # 负载均衡配置, 请求会被平均分配到8888和8889 端口
  	proxy_set_header Host $host:$server_port
	}

}

在实际项目中的负载均衡是比较复杂的, 但都是根据这个原理模型衍生出来的
受单台服务器内存等资源的限制, 负载均衡集群的服务器也不能无限增多,但因其良好的容错机制, 负载均衡成为了实现高可用架构中必不可少的一环

正向代理

正向代理和反向代理相反, 多个人想找代购买同一个商品, 代购找到买这个的店然后一次性买了, 在这个过程中, 该店主是不知道代购是帮谁买东西, 那么代购对于多个想买商品的顾客来讲, 就充当的正向代理

nginx 就是图中的proxy, 左边3个 client 在请求时向nginx获取内容, server 是感受不到 3台client 存在的
此时,proxy 就充当了3个client的正向代理

正向代理, 意思就是一个位于客户端和原始服务器之间的服务器, 为了从原始服务器获取内容, 客户端向代理服务器发送一个请求并指定目标, 即原始服务器, 然后代理向原始服务器转交请求并将获取的内容返回给客户端, 客户端才能使用正向代理

如vpn 就是一个正向代理工具
vpn 会将想要访问墙外服务器server 的页面请求, 代理到一个可以访问该网站的代理服务器proxy 上, 这个proxy把墙外服务器server上获取的网页内容, 再转发给客户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小羊Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值