• nginx主配置文件学习,以及nginx的反向代理和负载均衡


    1.nginx.conf主配置文件学习

    worker_processes 4:  表示nginx的进程数,根据CPU的核数来定义,起到优化的作用。通过cat  /proc/cpuinfo来查看核数
    events {
        worker_connections  1024;    #连接数
    }
    #http区域块,定义nginx的核心web功能
    http {
        include(关键字)       mime.types(可修改的值);
        default_type  application/octet-stream;
        
        #定义日志格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        #开启访问日志功能的参数          
        access_log  logs/access.log  main;
        sendfile        on;
        #tcp_nopush     on;
        #keepalive_timeout  0;
        #保持长连接
        keepalive_timeout  65;
        #支持图片 gif等等压缩,减少网络带宽
        gzip  on;
        
        #这个server标签 控制着nginx的虚拟主机(web站点)
        server {
            # 定义nginx的入口端口是80端口
            listen       80;
            # 填写域名,没有域名就写ip地址
            server_name  www.s15rihan.com;
            # 定义编码
            charset utf-8;
            # location定义网页的访问url
            #就代表 用户的请求 是  192.168.13.79/
            location / {
                #root参数定义网页根目录
                root   html;
                #定义网页的首页文件,的名字的
                index  index.html index.htm;
            }
            #定义错误页面,客户端的错误,就会返回40x系列错误码
            error_page  404  403 401 400            /404.html;
            #500系列错误代表后端代码出错
            error_page   500 502 503 504  /50x.html;
        }

     定义两个虚拟机  vim   nginx.conf 

    worker_processes  4;   nginx工作进程数,根据cpu的核数定义,起到优化作用
    events {
        worker_connections  1024;    #连接数
    }
    #http区域块,定义nginx的核心web功能
    http {
        include(关键字)       mime.types(可修改的值);
        default_type  application/octet-stream;
        
        #定义日志格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        #开启访问日志功能的参数          
        access_log  logs/access.log  main;
        sendfile        on;
        #tcp_nopush     on;
        #keepalive_timeout  0;
        #保持长连接
        keepalive_timeout  65;
        #支持图片 gif等等压缩,减少网络带宽
        gzip  on;
        
        #这个server标签 控制着nginx的虚拟主机(web站点)
        server {
            # 定义nginx的入口端口是80端口
            listen       80;
            # 填写域名,没有域名就写ip地址
            server_name  www.s15rihan.com;
            # 定义编码
            charset utf-8;
            # location定义网页的访问url
            #就代表 用户的请求 是  192.168.13.79/
            location / {
                #root参数定义网页根目录
                root   html;
                #定义网页的首页文件,的名字的
                index  index.html index.htm;
            }
            #定义错误页面,客户端的错误,就会返回40x系列错误码
            error_page  404  403 401 400            /404.html;
            #500系列错误代表后端代码出错
            error_page   500 502 503 504  /50x.html;
        }
        #在另一个server{}的外面,写入新的虚拟主机2
        server{
            listen 80;
            server_name  www.s15oumei.com;
            location /  {
            root  /opt/myserver/oumei;        #定义虚拟主机的网页根目录
            index  index.html;
            }
        }
    }

    准备两个虚拟主机的网页根目录内容

    [root@localhost myserver]# tree /opt/myserver/
    /opt/myserver/
    ├── oumei
    │   └── index.html    写入自己的内容
    └── rihan
    └── index.html    写入自己的内容

    修改windows本地的测试域名 C:WindowsSystem32driversetchosts文件写入如下内容

    192.168.13.79 www.s15rihan.com
    
    192.168.13.79 www.s15oumei.com
    
    因为我们没有www.s15oumei.com 也没有 www.s15rihan.com ,因此要在本地搞一个测试域名,

    然后在浏览器测试访问 两个不同的 web站点

    www.s15rihan.com

    www.s15oumei.com

     nginx的访问日志功能

    1.开启nginx.conf中的日志参数
    
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        #开启访问日志功能的参数          
        access_log  logs/access.log  main;
        
        
    2.检查access.log的日志信息
    
    tail -f  access.log 
    
    
    
    nginx的拒绝访问功能
    1.在nginx.conf中,添加参数
    在server{}虚拟主机标签中,找到location 然后添加参数
    
            #当访问 192.168.13.79/  的时候 
            location / {
                #拒绝参数是 deny 
                #deny 写你想拒绝的IP地址
                #deny还支持拒绝一整个网站
                deny  192.168.13.33;
                root   /opt/myserver/rihan;
                index  index.html;
            }

     nginx的错误页面优化

    1.修改nginx.conf 中的配置参数
    这个s1540x.html存在 虚拟主机定义的网页根目录下
      error_page  404              /s1540x.html;

    nginx反向代理:nginx的反向代理功能(自带了反向代理的功能,天生的二道贩子)

    实验的环境准备

    准备2个服务器,都安装好nginx软件

    nginx1 192.168.13.79 作为web服务器 (理解为火车票售票点)

    nginx2 192.168.13.24 作为反向代理服务器 (黄牛)

    用户 通过浏览器去访问 黄牛 (代理)
    浏览器 访问 192.168.13.24 > 192.168.13.79

    nginx负载均衡

     1.什么是集群?

    为了解决服务器的压力,让一堆服务器做一件事情

     

     为什么要用集群?

     

     

    什么是负载均衡?

    Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,
    实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾

    Nginx要实现负载均衡需要用到proxy_pass代理模块配置

    Nginx负载均衡与Nginx代理不同地方在于

    Nginx代理仅代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池

    Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。

    实验准备:

    1.准备三台计算机

    nginx1      192.168.13.121   作为nginx负载均衡器                只要我访问这个负载均衡器,查看页面的结果,到底是来自于
    
    nginx2      192.168.13.24    web服务,提供一个页面        
    
    nginx3         192.168.13.79  web服务,提供一个页面 

    2.配置两个nginx的web页面

        192.168.13.24  准备一个   index.html  写入  你好,我是192.168.13.24机器
        192.168.13.79    准备一个    index.html 写入        老了老弟,我是192.168.13.79

    3.然后启动两个nginx web 服务

    4.准备一个nginx负载均衡器  192.168.13.121机器上,修改nginx.conf 

    upstream s15webserver  {
    ip_hash;
    server 192.168.13.79 ;
    server 192.168.13.24 ;
    }
    
    
    定义一个负载均衡池,负载均衡的算法有
                调度算法      概述
                轮询        按时间顺序逐一分配到不同的后端服务器(默认)
                weight       加权轮询,weight值越大,分配到的访问几率越高
                ip_hash      每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
                url_hash      按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
                least_conn    最少链接数,那个机器链接数少就分发
    
                1.轮询(不做配置,默认轮询)
    
                2.weight权重(优先级)
    
                3.ip_hash配置,根据客户端ip哈希分配,不能和weight一起用

    5.然后在虚拟主机中添加 反向代理配置,将用户的请求,直接转发给 负载均衡池中的服务器

    server {
            listen       80;
            #当我的请求来自于 192.168.13.121时,走这>个虚拟主机
            server_name  192.168.13.121;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
            #核心配置,就在这,一条proxy_psss参数即可
            location / {
              proxy_pass http://s15webserver;
                #root   html;
                #index  index.html index.htm;
            }
    
    }

    6.启动负载均衡器的 nginx服务

    7.5.在客户端windows中测试访问,负载均衡器  192.168.13.121 ,查看请求分发的结果 

  • 相关阅读:
    Linux下的C编程实战之文件系统编程
    IPMSG在ubuntu linux上的安装
    NTP服务器
    [Multimedia][MPEG2]MPEG2系统原理
    BitOperation.cs
    android interview 1
    Android USB Host
    android interview 3
    someone's android note
    Android Afianl框架(1)——FinalActivity注解
  • 原文地址:https://www.cnblogs.com/wqzn/p/10216394.html
Copyright © 2020-2023  润新知