玩命加载中 . . .

Nginx


Nginx

是一款高性能的反向代理服务器,可以实现反向代理、负载均衡、动静分离等功能

Nginx在Linux下的安装

  1. 需要安装 gcc 的环境

    yum install gcc-c++

  2. 第三方的开发包

    yum install -y pcre pcre-devel

    yum install -y zlib zlib-devel

    yum install -y openssl openssl-devel

  3. 上传Nginx文件

  4. 解压缩

    tar -zxvf nginx-1.8.0.tar.gz

    进入nginx-1.8.0目录 使用 configure 命令创建一 makeFile 文件。

    ./configure \
    --prefix=/usr/local/nginx \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-http_gzip_static_module \
    --http-client-body-temp-path=/var/temp/nginx/client \
    --http-proxy-temp-path=/var/temp/nginx/proxy \
    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
    --http-scgi-temp-path=/var/temp/nginx/scgi
    

    执行后可以看到Makefile文件

  5. 编译

    make

  6. 安装

    make install

    注意:启动nginx 之前,上边将临时文件目录指定为/var/temp/nginx/client, 需要在/var 下创建此 目录

    mkdir /var/temp/nginx/client -p

  7. 启动

    cd /usr/local/nginx/sbin

    ./nginx

    查看进程

    ps aux|grep nginx

  8. 访问

    默认为80端口,可以直接Localhost访问

    地址栏输入虚拟机的IP即可访问(默认为80端口)

    192.168.176.128

    如果没有访问成功,有可能是因为防火墙没有关闭

    centos7关闭防火墙:systemctl stop firewalld

    如果不想关闭防火墙,可以设置开放端口

    firewall-cmd --add-port=8080/tcp --permanent

    重启防火墙:firewall-cmd -reload

    查看开放的端口号:firewall-cmd --list-all

    关闭:

    ​ 方式一(杀进程):./nginx -s stop

    ​ 方式二(退出):./nginx -s quit

    重启:

    ./nginx -s reload

    查看版本

    ./nginx -v

Nginx配置文件

位置:/usr/local/nginx/conf/nginx.conf

配置文件有三部分组成

  1. 全局块

    从配置文件开始到events间的区域

    作用:主要设置一些影响nginx服务器整体运行的配置指令

    worker_processes:处理并发量的值,值越大处理并发量越多

  2. events块

    作用:影响Nginx服务器与用户网络连接

    worker_connections:支持最大的连接数

  3. http块

    配置最频繁的部分

    包括http全局块、sever块

部署静态页面

作用:在nginx服务器中访问静态页面

  1. 将静态页面上传到nginx目录中

  2. 修改配置文件(conf/nginx.conf)

            location / {
                root   index;
                index  index.html index.htm;
            }
    # root代表文件夹,index代表首页
    #将root 改为index(自己的静态页面文件夹)
    

修改配置文件的方法:

由于在linux上大量修改配置文件使用vim命令会很繁琐,这里推荐一种vscode远程修改上传配置文件的方法。

VScode使用sftp快速同步服务器文件

配置虚拟主机

端口绑定

作用:输入不同端口号就可以进入不同页面

  1. 修改nginx配置文件

    server {
        listen       81; #端口号
        server_name  localhost; #域名或者Ip
    
        location / { #访问路径配置
            root   index; #目录
            index  index.html index.htm; #默认首页
        }
    
        error_page   500 502 503 504  /50x.html; #错误页面
            location = /50x.html {
            root   html;
        }
    }
    
    #复制两份server,就可以有两台虚拟主机
    server {
        listen       82; #端口号
        server_name  localhost; #域名或者Ip
    
        location / { #访问路径配置
            root   regist; #目录
            index  regist.html regist.htm; #默认首页
        }
    
        error_page   500 502 503 504  /50x.html; #错误页面
            location = /50x.html {
            root   html;
        }
    }
    
  2. 重启nginx

    ./nginx -s reload

  3. 访问页面

    192.168.179.128:81 来到主页

    192.168.179.128:82 来到注册页面

域名绑定

作用:输入域名就可以进入页面

一个域名对应一个 ip 地址,一个 ip 地址可以被多个域名绑定。

  1. 本地测试可以修改 hosts 文件(C:\Windows\System32\drivers\etc\host)

    192.168.177.129 www.hmtravel.com

    192.168.177.129 regist.hmtravel.com

  2. 修改nginx配置文件

        server {
            listen       80; #这里全配置成80
            server_name  regist.hmtravel.com; #修改此处
    
            location / {
                root   regist;
                index  regist.html regist.htm;
            }
        }
    
        server {
            listen        80; #这里全配置成80
            server_name  www.hmtravel.com; #修改此处
    
            location / {
                root   index;
                index  index.html index.htm;
            }
        }
    
  3. 重启nginx

    ./nginx -s reload

  4. 访问页面

    www.hmtravel.com

    regist.hmtravel.com

Nginx反向代理

作用:网络和服务器之间加上nginx

反向代理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器

正向代理是针对你的客户端,而反向代理是针对服务器的

正向代理

反向代理

反向代理的好处:

  1. 当服务器并发量变大时,搭建服务器集群,反向代理能将大并发量转移到反向代理服务器上,再由自己按照一定规则将请求发送给服务器
  2. 反向代理接收所有请求,反向代理服务器和服务器集群之间可以建立防火墙,从而提高安全性

应用一

效果:访问www.hmtravel.com或192.168.179.128:80,实际访问的是tomcat页面

  1. 修改nginx配置文件

    upstream tomcat-travel{
        server 192.168.179.128:8080;
    }
    
    server {
        listen       80;
        server_name  www.hmtravel.com;
    
        location / {
        #root index; #注释掉
        proxy_pass http://tomcat-travel; #代理上面的ip
        index  index.html index.htm;
    }
    
  2. 重启nginx

    ./nginx -s reload

  3. 访问页面

    输入www.hmtravel.com,效果看到tomcat页面

    流程:访问域名www.hmtravel.com,找到 proxy_pass代理tomcat-travel,tomcat-travel对应的服务器是192.168.179.128:8080,返回tomcat页面

遇到的坑 1.没有跳转到tomcat页面,仍然跳转的是travel页面。 解决:查看配置文件,root有没有注释掉

应用二

效果:访问192.168.179.128:9001/edu/index.html和192.168.179.128:9001/dev/index.html访问的是不同的两个页面

  1. 修改nginx配置文件

    server {
        listen       9001;#此处修改
        server_name  192.168.179.128; #此处修改
    
        location ~ /edu/ { # ~是正则表达式的意思,包含edu就跳转指定页面
        proxy_pass http://127.0.0.1:8080; 跳转到指定tomcat
    }
    
        location ~ /dev/ { # ~是正则表达式的意思,包含edu就跳转指定页面
        proxy_pass http://127.0.0.1:8081; 跳转到指定tomcat
    }
    }
    

    location 后可以跟几种形式

    1. = 表示uri必须和后面的保持一直才能访问,如: = /edu/a.html,则访问时必须是192.168.179.128:9001/edu/a.html

    2. ~ 表示正则表达式,包含即可,如:~ /edu/,则访问时

      192.168.179.128:9001/edu/a.html,192.168.179.128:9001/edu/b.html均可访问

    3. * 表示不区分大小写的正则表达式,如:* /edu/,则访问192.168.179.128:9001/EDU/a.html,192.168.179.128:9001/edu/b.html均可访问

  2. 重启nginx

    ./nginx -s reload

  3. 访问页面

    192.168.179.128:9001/edu/index.html

    192.168.179.128:9001/dev/index.html

Nginx负载均衡

负载均衡,其意思就是分摊到多个操作单元上进行执行

配置负载均衡-准备工作

  1. 将刚才的存放工程的tomcat复制三份,修改端口分别为8080 ,8081,8082
  2. 分别启动这三个tomcat服务
  3. 为了能够区分是访问哪个服务器的网站,可以在首页标题加上标记以便区分

配置负载均衡

效果:访问192.168.179.128:80,访问到8080,8081,8082的tomcat

  1. 修改 Nginx配置文件

    #放在http块中 
    upstream tomcat-travel{
        server 192.168.179.128:8080;
        server 192.168.179.128:8081;
        server 192.168.179.128:8082;
    }
    
  2. 修改server

    server {
        listen       80;
        server_name  192.169.179.128;
    
        location / {
        proxy_pass http://tomcat-travel; #代理上面的ip
        index  index.html index.htm;
    }
    
  3. 输入网址进行测试

    观察标题,看看是否不同,经测试每台服务器出现的概率为33.3%

  4. 修改权重

    想要让某台服务器分担更多的压力,可以分配其权重,默认为1

    upstream tomcat-travel{
        server 192.168.179.128:8080 weight=2;
        server 192.168.179.128:8081;
        server 192.168.179.128:8082;
    }
    

负载均衡策略

  1. 轮询:平均按顺序访问,当一个服务器down掉就会自动剔除
  2. 权重:在ip后设置权重weight = 2,按照权重比例进行访问
  3. ip hash:在upstream块中加上ip_hash 即可。根据访问用户的Ip计算哈希值,则该用户永远访问的就是该服务器,可以有效解决session问题。
  4. fair:在upsteam块中加上fair即可。根据用户访问服务器的响应时间,哪个服务器响应时间短就访问哪个服务器。

动静分离

简单来说就是把动态请求和静态请求分开,nginx处理静态页面。

效果:访问192.168.179.128:80/image/1.jpg,访问的就是静态资源服务器中的数据。访问192.168.179.128:80……其他的页面,是正常反向代理访问的动态数据

  1. 准备工作

    将静态文件放到Linux服务器中,如/data/image/1.jpg

  2. 配置nginx服务器

    #静态资源服务器
    server {
        listen       80;
        server_name  192.169.179.128;
    
        location /image/ {
        root /data/
        #index  index.html index.htm;
        #autoindex on; #页面显示目录列表
    }
    #动态资源服务器(正常的反向代理)
    server {
        listen       80;
        server_name  192.169.179.128;
    
        location / {
        proxy_pass http://127.0.0.1:8080;
        index  index.html index.htm;
    }
    

文章作者: 小苏
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小苏 !
评论
  目录