Nginx学习笔记
一、Nginx简介
1. Nginx是什么?
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 Nginx可以作为一个Web服务器进行网站的发布,也可以作为反向代理服务器进行负载均衡的实现常见的Web服务器:Tomcat、Apache、Nginx、Weblogic等
2. 特点
占用内存少、并发能力强
二、搭建Nginx环境
1.安装nginx
两种方式:
- 源代码安装:需要编译
./configure
——>make
——>make install
- 在线安装,参考:
http://nginx.org/en/linux_packages.html
在线安装(这里以Ubuntu为例子):
Install the prerequisites:
sudo apt install curl gnupg2 ca-certificates lsb-release |
To set up the apt repository for stable nginx packages, run the following command:
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ |
If you would like to use mainline nginx packages, run the following command instead:
echo "deb http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \ |
Next, import an official nginx signing key so apt could verify the packages authenticity:
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add - |
Verify that you now have the proper key:
sudo apt-key fingerprint ABF5BD827BD9BF62 |
The output should contain the full fingerprint 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 as follows:
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14] |
To install nginx, run the following commands:
sudo apt update |
访问测试
注:Nginx默认使用的是80端口
2. 目录结构
执行whereis nginx
查看命令程序:
- /usr/sbin/nginx
配置文件:
- /etc/nginx/nginx.conf
日志目录:
- /var/log/nginx/
默认虚拟主机目录:
- /usr/share/nginx/html
3. 相关命令
netstat -ntpl | grep80 #查看进程信息 |
4. 关于配置文件
主配置文件nginx.conf,包含三部分内容:全局配置、工作模式配置、HTTP配置
#运行nginx的用户 |
虚拟主机配置文件/etc/nginx/conf.d/default.conf
,可以定义多个虚拟主机配置文件
将原配置文件备份,养成数据备份的习惯
三、HTTP服务器
1. 简介
虚拟主机:把一台物理服务器划分为多个虚拟的服务器,称为虚拟主机
每个虚拟主机对应一个Web站点,其实就是在一台服务器上搭建多个网站
2. 虚拟主机
步骤:
- 准备网站目录及测试页面
cd ~ |
- 创建虚拟主机配置文件并配置
cd /etc/nginx/conf.d/ |
sudo vim test1.conf |
server { |
实现虚拟主机的三种方式:
- 基于不同的IP
- 基于不同的端口
- 基于不同的域名
- 配置域名解析(这里以修改本地host文件为例子,实际使用需要购买域名)
在客户端主机中配置域名解析
windows:C:\Windows\System32\drivers\etc\hosts
Linux/Mac:/etc/hosts
192.168.1.59 www.ums.com192.168.1.59 www.sms.
域名解析的过程:查找hosts文件——>DNS
注:该方式仅是本地测试时使用的,实际应用中要购买注册域名
3.作为图片服务器
使用Nginx作为图片服务器:
- 上传:使用ftp或sftp上传图片到服务器指定的ftp目录下
- 下载:通过访问Nginx服务器来访问ftp目录下的图片文件,即使用HTTP请求来访问资源文件,而不是通过FTP请求
步骤:
- 创建存放图片的文件夹,并上传图片到该目录中
mkdir /home/soft01/www/imag
- 配置Nginx
sudo vi /etc/nginx/conf.d/default.conf |
访问url:http://ip/images
实际物理路径:/home/soft01/www/images
四、反向代理
1. 简介
1. 正常请求
客户端发送请求到服务器,服务器接收请求并响应数据
2. 正向代理
概念:位于客户端和原始服务器之间的服务器,为了从原始服务器获取数据,客户端向代理服务器发送请求并指定请求目标(原始服务器),然后代理服务器将请求转换给原始服务器,并将响应的数据返回给客户端
正向代理是客户端使用的,对客户端进行代理,客户端知道并主动使用代理
作用:
- 访问原来无法访问的资源(google、fackbook等),翻墙
- 可以做缓存,加速资源的访问
- 对客户端上网进行认证授权
- 上网行为管理,记录用户访问记录,对外隐藏用户信息
3. 反向代理
概念:客户端发送请求到服务器(客户端认为是原始服务器,实际上是一台反向服务器),反向代理服务器接收请求并将请求转发给内部网络中的多台集群服务器,并将响应的数据返回给客户端反向代理一般用于服务器集群、分布式等,实现负载均衡
作用:
- 负载均衡,提高处理和响应速度
- 保证内网的安全,隐藏服务器信息,防止Web攻击
2. 配置
使用Nginx作为其他服务器
步骤:
- 创建虚拟主机配置文件,并配置反向代理
# 设置tomcat代理 |
- 配置域名解析
- 访问
五、负载均衡
1. 简介
概念:将接收到的请求按照一定的规则分发到不同的服务器进行处理,从而提高系统响应和处理速度,称为负载均衡
2. 配置
步骤:
- 准备网站(模拟淘宝,后面有多台服务器)
#拷贝两个tomcat |
- 创建虚拟主机配置文件,并配置负载均衡
sudo cpproxy.conf taobao.conf |
六、动静分离
1. 简介
问题:tomcat在处理静态资源时效率不高,默认情况下所有资源都由tomcat处理,会导致Web应用响应慢,占用系统资源
解决:
将静态资源交由Nginx处理,动态资源仍由tomcat处理,实现动静分离
实际上就是把Nginx作为静态资源服务
2、配置
步骤:
- 编辑taobao.conf,配置动态分离
sudo vi /etc/nginx/conf.d/taobao.conf |
- 创建存放静态资源的文件夹,并将资源资源放到该目录中
cd /home/soft01/www |
高并发的处理:
- 负载均衡:集群
- 动静分离:使用Nginx、CDN
- 缓存:以空间换时间,提高系统效率
- 限流:流量控制
- 降级:服务降载