欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

聊一聊Nginx,带你轻松入门

程序员文章站 2022-03-12 22:02:18
1.Nginx简单介绍与引入Nginx 是一个高性能的HTTP和反向代理web服务器。同时它还提供了IMAP/POP3/SMTP服务。这里我们延接上一章的话题进行拓展,所以主要介绍nginx的反向代理。作为一个反向代理服务器,它可以通过配置文件来实现集群和负载均衡 (热加载)以及静态资源虚拟化。那么有的人就会问了,什么是反向代理呢?下面就具体讲一下。2.正向代理与反向代理说到反向代理,我们总是会先提起正向代理这个概念。正向代理正向代理是客户端请求目标服务器之间的一个代理服务器。客户端发起...

1.Nginx简单介绍与引入

Nginx 是一个高性能的HTTP和反向代理web服务器。同时它还提供了IMAP/POP3/SMTP服务。
这里我们延接上一章的话题进行拓展,所以主要介绍nginx的反向代理。
作为一个反向代理服务器,它可以通过配置文件来实现集群和负载均衡 (热加载)以及静态资源虚拟化。
那么有的人就会问了,什么是反向代理呢?下面就具体讲一下。

2.正向代理与反向代理

说到反向代理,我们总是会先提起正向代理这个概念。

  • 正向代理
    正向代理是客户端请求目标服务器之间的一个代理服务器。
    客户端发起请求,首先会经过代理服务器,然后再转发请求到目标服务器,获得内容后最后才响应给客户端。而其中所处的代理服务器,就称之为正向代理服务器。
    有点类似于上电脑课的时候,老师电脑里的管理器,可以直接管理学生电脑,调配网速甚至过滤一些见不得人的网址,记得那时候玩4399小游戏被老师发现后,再也没在那个老师的电脑课上登上这个网址哈哈。
    聊一聊Nginx,带你轻松入门
  • 反向代理
    理解了正向代理,接下来继续讲一下反向代理。
    客户端原本是直接通过HTTP协议访问某网站应用服务器,而在这中间我们加了一个代理服务器,由代理服务器来决定具体去访问目标服务器的某个ip,然后将结果返回给客户端,此时这个代理服务器称之为就是反向代理服务器。
    聊一聊Nginx,带你轻松入门

举例说一下正向代理与反向代理的区别:
正向代理,就是相当于去访问YouTube,我们是无法直接访问服务器的,于是客户端借助了一台代理服务器来代替他去对服务端进行请求。而服务器并不知道真实发起请求的客户端是谁的。然后请求访问后请求会返回给代理服务器,然后再通过代理服务器返回给客户端,这个就叫做正向代理。

反向代理,就类似于拨打10000号人工客服,经过一个主线拨打后,随机给我分配一个客服,这个客服我也不知道会是哪个小哥哥或者小姐姐,反正按照一套规则(响应时间,负载均衡等)给我提供服务的客服,而这个操作,就类似于反向代理。

反向代理的配置

server {
	listen 80;
	server_name localhost;
	location / {
		proxy_pass http://demo; 
	}
}

3.负载均衡

那这时候又有问题了,为什么不需要方向代理也可以直接进行HTTP访问,为什么我还要用反向代理来处理问题吗,不嫌麻烦吗。
这个问题同样可以用人工客服的话题来类比,随着用户量提升,一台服务器承受不住压力,这时候就需要将请求分配给多台服务器,以防某个机器突然挂掉,或者压力过大,从而影响用户的使用体验甚至造成一些严重的损失。

这个时候,就可以用到Nginx的反向代理来实现负载均衡了。

负载均衡的配置

upstream test{
	server 192.168.1.165:8080;
	server 192.168.1.166:8080;
}
server {
	listen 80;
	location / {
		proxy_pass http://demo;
	}
}

4.虚拟主机

有用户量过大而需要负载均衡,那么同时也有刚起步公司为了降低成本,将不同网站部署在同一台服务器。
同时可以让用户访问两个不同的域名打开网站不同,但服务器相同的网站,这个叫做虚拟主机

虚拟主机配置


server {
	listen 80 ;
}
server {
	listen 80;
	server_name www.test1.com; 
	location / {
		proxy_pass http://192.168.1.165:8080; 
	}
}
server {
	listen 80;
	server_name www.test2.com; 
	location / {
		proxy_pass http://192.168.1.165:8081;
	}

5.抢占机制

正常情况下的并发处理机制大致有三种:多线程、多进程、异步机制。
Nginx同时采用了这三种机制,而其中的异步机制,乃是使用了异步非阻塞方式来处理的。
我们先说一下传统的处理机制
聊一聊Nginx,带你轻松入门
传统的模式,每次阻塞后会生成新的worker,造成大量资源浪费。
聊一聊Nginx,带你轻松入门
而Nginx采用的异步非阻塞方式可以有效的处理请求。
这也是Nginx能够承载高并发的原因之一。

抢占机制配置

events {
   # 默认使用epoll
   use epoll;
   # 每个worker允许连接的客户端最大连接数
   worker_connections  1024;
}

附:nginx的几个常用命令:

./nginx -s stop  暴力关闭nginx 会关闭用户连接请求 (有黑客入侵的时候使用这个可以立即关闭)
./nginx -s quit 优雅的停止,不接受新用户的同时,且用户请求完毕,才会关闭
./nginx -v 当期版本号
./nginx -V 具体信息 
./nginx -h/-?   命令帮助
./nginx .c 指定核心配置位置

本文地址:https://blog.csdn.net/weixin_42887211/article/details/110530761