学习视频来自狂神说【狂神说】Nginx最新教程
1 Nginx简介
客户端较少的情况下,仅仅使用tomcat就可以满足需求
于是我们在客户端和服务器中加了一个服务器,来实现反向呆立和负载均衡,也就是Nginx
没有什么是加一层解决不了的问题!
为什么使用Nginx,或者说有什么特点:
1 占用内存空间少,大小约为1M。
2 并发能力强,可以达到50000个并发连接相应。
3 安装简单,配置文件简洁,Bug非常少,启动非常容易,几乎可以做到7*24小时不间断运行。
2 Nginx作用
http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
正向代理,代理客户端的
反向代理,代理服务器的
正向代理的作用:
-
科学上网:当前用户不能直接访问某个服务器A时,通过将请求发给某个可以连接服务器A的代理服务器,然后由代理服务器去访问服务器A,最后代理服务器再将结果返回给用户。
-
加速访问:电信用户访问联通服务器时,速度会变得很慢,如果有同事支持联通和电信的代理服务器,那么用户就可以先访问代理服务器,代理服务器再去访问联通服务器,速度较快(加速器的原理)。
-
缓存数据:将可能被多次访问的数据按照一定的策略存放于代理服务器中,以后用户访问请求资源时不必每次都去请求服务器。
-
授权访问:对访问者进行身份验证,进行访问控制。
-
隐藏访问者:用户访问某服务器A时不希望A能够知道用户本人的身份,使用代理服务器进行访问。
反向代理的作用:
-
保护服务器:只能使用代理服务器来访问某服务器A,用户则不能直接向服务器发送操作请求。
-
负载均衡:对用户的访问请求分发到多个服务器中。
简要对比:
正向代理:代理的是客户端,对客户端负责
反向代理:代理的是服务端,对服务端负责
3 负载均衡理解
希望能够让请求按照服务器的负载能力进行分配
方案1:轮询
按照请求到达顺序,给服务器排序后,每个服务器分发一个客户端请求
方案2:加权轮询
按照请求来的顺序,按照服务器的权重,给不同的服务器分配不同数量的请求
方案3:iphash,对客户端请求的IP进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
但是如果这台服务器出现了问题,那么保存的信息就全部丢失了,而且性能不是很好,因此不建议使用的Nginx来实现session共享,而是使用redis实现
动静分离,在软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的,例如(css,html,jpg,js等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则吧不变的资源和经常变的资源区分开来,动静资源做好了区分后,我们就可以根据静态资源的特点将其做缓存操作,提高资源的响应速度。
Nginx的作用:反向代理、负载均衡、动静分离
4 Nginx的安装
windows在官网下载即可下载Windows版本的,安装后在解压后目录下运行nginx.exe
在nginx.conf文件中可以看到监听的端口默认为80
于是查看一下
linux安装文件可以在官网下载linux版本,解压后在configure所在目录下
./ configure # 配置configure文件
make
make install
接下来启动nginx,并查看相关配置
[root@VM-4-12-centos ~]# whereis nginx
nginx: /usr/local/nginx
[root@VM-4-12-centos ~]# cd /usr/local/nginx/
[root@VM-4-12-centos nginx]# ll
total 16
drwxr-xr-x 2 root root 4096 Aug 10 18:09 conf
drwxr-xr-x 2 root root 4096 Aug 10 18:09 html
drwxr-xr-x 2 root root 4096 Aug 10 18:09 logs
drwxr-xr-x 2 root root 4096 Aug 10 18:09 sbin
# 到sbin目录下启动nginx
[root@VM-4-12-centos nginx]# cd sbin
[root@VM-4-12-centos sbin]# ll
total 3816
-rwxr-xr-x 1 root root 3904512 Aug 10 18:09 nginx
[root@VM-4-12-centos sbin]# ./nginx
[root@VM-4-12-centos sbin]# cd ..
[root@VM-4-12-centos nginx]# cd conf/
[root@VM-4-12-centos conf]# ll
total 68
...
-rw-r--r-- 1 root root 2656 Aug 10 18:09 nginx.conf
-rw-r--r-- 1 root root 2656 Aug 10 18:09 nginx.conf.default
...
# 查看配置文件,80端口
[root@VM-4-12-centos conf]# cat nginx.conf
...
server {
listen 80;
server_name localhost;
...
使用服务器公网ip访问,nginx正常运行
5 Nginx常用命令
cd /usr/local/nginx/
./nginx # 启动
./nginx -s stop # 停止
./nginx -s quit # 安全退出
./nginx -s reload # 重新加载配置文件
ps aux|grep nginx # 查看nginx进程
6 nginx使用方法
[root@VM-4-12-centos conf]# cat nginx.conf
# 这里是全局配置
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
# 这里是最大连接数
events {
worker_connections 1024;
}
# http配置
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# 桌桌名字可以任意定义,这里的作用是为了给server中的代理所使用,weight是负载均衡中的权重,如果有多个服务器则按以下形式。
upstream zhuozhuo {
server 120.xxx...:... weight=1;
server 121.xxx...:... weight=1;
}
# 假如进入wangyuanzhuo.top,默认进入
server {
listen 80;
server_name localhost;
//代理
# 例如80端口默认进入这个
location / {
# 此处写服务器的ip地址,例如120.xxx...
# 以下是代理,访问配置nginx的服务器的80端口,会到达upstream配置的服务器中
proxy_pass http://wangyuanzhuo.top
}
#想让/admin下的请求进入另一台服务器
location / admin{
# 此处写服务器的ip地址,例如121.xxx...
}
...
}
实践测试
在本机安装了nginx之后,尝试使用本机的nginx代理到我的博客中,
ps:由于博客内容仅配置有一个服务器,只能验证反向代理而不能验证负载均衡的作用,这里就不再多做验证了嘿嘿。
在本机装的nginx中的conf修改部分如下:
upstream zhuozhuo {
server 47.100.172.216:80 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://wangyuanzhuo.top;
}
结果:访问127.0.0.1:80时到达
如果有多个服务器,权重就是此前的加权轮询,例如
第一个服务器的权重weight=1
第二个服务器的权重weight=3
那么四次访问中,有3个请求回到第2个服务器中,有1个会到第一个服务器中。
而对于用户来说,这个过程是无感知的。
以上就是简单的nginx学习,复杂的nginx配置可以参考
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://wangyuanzhuo.top/nginx%e5%ad%a6%e4%b9%a0%e8%ae%b0%e5%bd%95/