Nginx

一、Nginx认识

1. 什么是Nginx

2. 正向代理

客户端访问谷歌地址无法访问,通过访问代理服务器来进行访问可以访问(客户端的浏览器需要配置代理服务器)

3. 反向代理

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

4. 负载均衡

​ 客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。

​ 这中架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较合适的,成本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器相对应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器的直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情况呢?

思考:如果有一根木头让这匹马拉,但这匹马拉不动,我们一般会怎么处理,会找几匹马一起拉。因此我们可以用多个服务器来处理高并发 。

5. 动静分离

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

二、Linux操作Nginx

1. 安装Nginx

1.1 安装pcre依赖

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;
    }
posted @ 2021-05-09 13:37  codebound  阅读(103)  评论(0)    收藏  举报