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