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:\Windows\System32\drivers\etc\hosts文件写入如下内容

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 ,查看请求分发的结果 

猜你喜欢

转载自www.cnblogs.com/wqzn/p/10216394.html