Mr. Wen的学习记录! 学习 Nginx学习笔记

Nginx学习笔记

广告位

第一部分

1、什么是Nginx

高性能的http服务器和反向代理服务器,占内存小,性能好,并发强,高达50000个并发数

2、反向代理  

(1)、正向代理:在我们的客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问就叫正向代理    

    (2)、反向代理:客户端对代理是无感知的,因为客户端不需要配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

3、负载均衡

客户端发送多个请求到服务器,服务器处理请教,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端 如下图。但这种方法效率很慢,只适合小型项目

通过负载均衡提高请求和响应的速度,增加服务器的数量,将请求分发给各个服务器上面,就是让多个服务器进行负载。比如15个请求,平均分配到3台服务器里面

4、动静分享

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力

5、高可用

第二部分

1、Nginx的安装 一般是采取编译安装

文件在 /sur/src/目录,解压编译安装执行目录在 /usr/local/nginx/sbin配置目录 /usr/local/nginx/conf


2、常用命令要先进到命令所在目录才能用命令 /usr/local/nginx/sbin
查看nginx版本 ./nginx -v启动nginx ./nginx关闭nginx ./nginx stop重新加载nginx ./nginx -s reload 不用重启服务器了也能生效

3、nginx配置文件
位置 /usr/local/nginx/conf/nginx.conf
配置文件组成部分,分为以下3部分:

a、全局块从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户(组)、允许生成的worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等

worker_processes 1; 这是nginx处理并发数量的值,值越大处理的越多

b、events块
events块涉及的指令主要影响nginx服务器与用户的网络连接,常用的设置包括是否是开启对work process下的网络 连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个word process 可以同时 支持的最大连接数等

这个表示每个work process支持的最大连接数为1024这部分的配置对nginx的性能影响较大,在实际中应该灵活配置

c、http块这部分是nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里,需要注意的http块也可以包括http全局块、server块

http全局块        http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等        

server块        这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本       

每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机       

而每个server块也分为全局server块,以及可以同时包含多个location块


            1、全局server块                最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置           

2、location块                一个server块可以配置多个location块。                这块的主要作用是基于nginx服务器接收到的请求字符串(例如server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串                (例如 前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有这么多第三方模块的配置也在这里进行。

第三部分

(一)、nginx配置实例-反向代理       

实现效果:                

打开浏览器,在浏览器地址栏输入地址www.123.com会跳转到linux系统tomcat主页面中       

准备工作:               

1、在Linux系统安装tomcat,使用其默认端口8080。方法:将tomcat放到/usr/src 然后解压,进到其里面的bin目录,./start.sh即可启动.tomcat启动需要java环境, java -version查看版本。tomcat启动后cd .. && cd logs && tail -f catalina.out               

2、在/usr/src/里面安装nginx        在windows系统中输入tomcat地址 localhost:8080 192.169.2.222:8080        访问过程的分析                

原理:www.123.com(windows服务器),对外暴露的是nginx服务器,保护tomcat服务器,也就是123.com不能直接访问tomcat,要通过nginx来转一下

在windows系统的host文件进行域名和ip的对应设置,192.168.2.182    www.123.com在server处添加www.123.com location处添加proxy_pass http://127.0.0.1:8080    这样在浏览器输入www.123.com就自动跳到了tomcat代码如下:

server {
listen 80;
server_name 192.168.2.222;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8080;
}
# 作用:在浏览器输入192.168.2.222:80 时就自动跳转到127.0.0.1:8080
#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

实例2:

实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务器中,nginx监听端口9001如:访问http://192.168.2.222:9001/edu/ 直接跳转到127.0.0.1:8081如:访问http://192.168.2.222:9001/vod/ 直接跳转到127.0.0.1:8082


准备工作:

准备2个tomcat服务器,一个是8081端口,一个是8082端口,分别在这2个里面进行了更改并启动tomcat分别在8081里面的webapps里面创建edu,里面创建a.html,分别在8082里面的webapps里面创建vod,里面创建a.html,创建文件夹和测试页面
具体配置在nginx配置文件里面进行配置 之前已经有了一个server {}了

# 下面的这个配置反向代理利用路径进行反向代理

# 下面的这个配置反向代理利用路径进行反向代理

server {
listen 9001;
server_name 192.168.2.222;

location ~ /edu/ {
proxy_pass http://127.0.0.1:8081;
}

location ~ /vod/ {
proxy_pass http://127.0.0.1:8082;
}


}

}
访问http://192.168.2.222:9001/vod/a.html正常访问 访问http://192.168.2.222:9001/edu/a.html正常访问

location { 
} 
  • location加~号表示uri包含正则表达式,并且区分大小写,如区分vod和VOD
  • ~* 这个符号不区分大小写
  • = 这个符号表示必须完全匹配
  • 注意:如果uri中包含正则表达式,则必须要有~或者~*标识

(二)、负载均衡

概念:通过增加服务器数量,将请求分发给不同的服务器,以提高效果

案例:
实现效果:浏览器地址栏输入地址http://192.168.2.222/edu/a.html,负载均衡效果,平均8081和8082两个tomcat中

准备工作:

在2台tomcat里面的(8081 8082)webapps目录中,分别创建edu文件夹,在edu文件夹中创建a.html在nginx配置文件里面进行负载均衡配置

# 以下为配置负载均衡
upstream myserver{ # 这个名字可以随意取
server 192.168.2.222:8081;
server 192.168.2.222:8082;
#这2台就是用来做负载的服务器
}

server {
listen 90;
server_name 192.168.2.222;

location / {
proxy_pass http://myserver;
}
}
#每次在浏览器输入192.168.2.22:90/edu/a.html时,每次刷新都会用不同的服务器进行负载(这2台服务器里面都有a.html文件,文件夹目录也相同)


负载方式:

  • 轮询(默认) 每个请求按照时间顺序逐一分配到不同的负载服务器,如果某台服务器down掉,能自动踢除坏的这台
  • weight weight代表权重,默认值为1,权重越高,则分配的请求越多; 192.168.2.222:8080 weight=10;
  • ip_hash值判断 直接在upstream myserver {             ip_hash; # 直接添加到这里面             192.168.2.222:8081;             192.168.2.222:8081; } 每个请求按访问时的Ip_hash值来判断,这个ip将永远访问第一次的负载服务器;这样可以解决session问题;
  • fair方式 按负载服务器响应时间来分配请求,响应时间短的优先分配;
  • upstream myserver {     192.168.2.222:8081;     192.168.2.222:8081;     fair; }

(三)、动静分离概念:把动态请求和静态请求分开,可以理解成用nginx处理静态页面,用tomcat处理动态页面

动静分离主要是2种思路:

1、纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流的方案

2、动态和静态文件混合在一起发布,通过nginx来分开通过location指定不同的后缀名实现不同的请求和流量,通过expires参数设置,可以浏览器缓存过期时间,减少与服务器之间的请求和流量。具体expires定义:是给一个资源设置一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量,此种方法非常适合不经常变动的资源。

准备工作:

1、在Linux系统中准备一些静态资源,用于进行访问在/data/中新建www image目录,www里面设置a.html image里面放置1.jpeg
实现的效果是:通过nginx请求到这些静态资源,即a.html 1.jpeg

方法:

在nignx配置文件中进行配置

# 下面这个配置为静态分离
server {
listen 100;
server_name 192.168.2.222;

location /www/ { # 目录是www里面的,所以www
root /data/; # 文件目录是在/data/里面
index index.html index.htm;
}

location /image/ {
root /data/;
autoidnex on; #列出目录

}
}
#配置完成

配置完后在浏览器输入http://192.168.2.222:100/image/1.jpeg

本文来自网络,不代表Mr. Wen的学习记录!立场,转载请注明出处。

作者: admin

本人小白,什么也不懂,请教别人快被人嘲笑死了,不如自己学习下。不要问我,我什么也不会。
上一篇
下一篇
广告位

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回顶部