Nginx
一、Nginx认识
1. 什么是Nginx
2. 正向代理

客户端访问谷歌地址无法访问,通过访问代理服务器来进行访问可以访问(客户端的浏览器需要配置代理服务器)
3. 反向代理
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,有反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP地址。

4. 负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。
这中架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较合适的,成本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器相对应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器的直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情况呢?
思考:如果有一根木头让这匹马拉,但这匹马拉不动,我们一般会怎么处理,会找几匹马一起拉。因此我们可以用多个服务器来处理高并发 。

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

二、Linux操作Nginx
1. 安装Nginx
1.1 安装pcre依赖
-
把安装压缩文件放到Linux系统中
cd /usr/src
- 解压压缩文件
tar -xvf pcre-XXX.tar.gz
- 进入解压后的目录,执行 ./configure

- 使用
make && make install(表示把文件编译并且安装)
出现错误:make:*** No targets specified and no makefile found.Stop.
执行以下其中一种方法 优先第四种
# 一、update最新版本系统软件
yum update
# 二、编译缺失关联软件
yum install gcc build-essential
# 三、按顺序执行以下命令安装ncurses
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
cd ncurses-5.6
./configure -prefix=/usr/local -with-shared -without-debug
make
make install
# 四、如果没有安装其他依赖先安装依赖 在 pcre 文件目录下
yum -y install gcc gcc-c++ autoconf automake
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
./configure
make && make install
- 安装后,可以使用命令查看版本号
pcre-config --version
1.2 安装其他的依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
1.3 安装Nginx

- 把下载的nginx文件放到
/usr/src下 - 解压文件
tar -xvf nginx-XXX.tar.gz
- 进入解压之后的目录,执行
./configure进行检查 - 使用
make && make install - 安装成功之后,在usr多出来一个文件夹local/nginx,在nginx有sbin有启动脚本
- 检查nginx是否可以启动
cd /usr/local/nginx/sbin/
ls
./nginx
ps -ef | grep nginx

- 查看防火墙开放的端口号
firewall-cmd --list-all
#查看防火墙状态
systemctl status firewalld
# 开启
sudo service firewalld start
# 重启
sudo service firewalld restart
# 关闭
sudo service firewalld stop
如提示错误:-bash: firewall-cmd-reload: command not found
未识别的命令 firewall-cmd
可能是没有安装firewall。安装命令:yum install firewalld
- 设置开放端口号
sudo firewall-cmd --add-port=80/tcp --permanent
- 重启防火墙
firewall-cmd-reload
- 打开浏览器访问Nginx,Nginx默认是80端口直接可以 服务器地址 访问
2. Nginx常用的操作命令
- 使用nginx操作命令前提条件:必须进入nginx的目录/usr/local/nginx/sbin
# 1、查看nginx的版本号
./nginx -v
# 2、启动ngin
./nginx
#3、关闭nginx
./nginx -s stop
#4、重新加载nginx
./nginx -s reload
3. Nginx的配置文件
3.1 Nginx配置文件的位置
- /usr/local/nginx/conf/nginx.conf
3.2 Nginx配置文件的组成
- nginx配置文件有三部分组成
1. 全局块
从配置问及那开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组)、允许生成worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。比如:
worker_processes 1; # 表示worker_processes值越大,可以支持的并发处理器也越多
2. events块
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接。比如:
worker_connections 1024; #支持的最大连接数
3. http块
Nginx服务器配置中最频繁的部分,http 块包括:http 全局块,server 块
3.3 修改配置文件域名映射
server {
listen 80;
server_name xxx.xxx.com;
ignore_invalid_headers off;
client_max_body_size 0;
proxy_buffering off;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass http://localhost:9003;
}
}
server {
listen 80;
server_name xxx.xxx.com;
ignore_invalid_headers off;
client_max_body_size 0;
proxy_buffering off;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass http://localhost:8001;
}
}
upstream adminsvr {
server 127.0.0.1:8092;
server 127.0.0.1:8093;
}
upstream usersvr {
server 127.0.0.1:8090;
server 127.0.0.1:8091;
}
upstream apisvr {
server 127.0.0.1:8890;
server 127.0.0.1:8891;
}

浙公网安备 33010602011771号