centos下从零配置Nginx(负载均衡)
Nginx下载安装
先下载依赖环境,不然装不上yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
- 下载源码包
wget -c https://Nginx.org/download/Nginx-1.12.0.tar.gz
解压缩源码
tar -zxvf Nginx-1.12.0.tar.gz
- 配置,编译安装 开启Nginx状态监测功能
./configure --prefix=/opt/Nginx112/
编译完出线makefile文件就开始make && make install
cd sbin ./Nginx #启动 ./Nginx -s stop #关闭 ./Nginx -s reload #平滑重启 ,修改了Nginx.conf之后,可以不重启服务,加载新的配置
- 分析Nginx的工作目录,内容
[[email protected] Nginx112]# ls client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
conf 存放Nginx的配置文件的 Nginx.conf 这里是控制Nginx所有功能的文件 html 存放网页html的目录 index.html logs 存放log日志文件 sbin 存放Nginx可执行命令的 Nginx脚本命令 #user nobody;Nginx的工作进程数,以cpu核数为数量 cat Nginx.conf 核心配置如下 #定义Nginx工作进程数 worker_processes 5; #错误日志 #error_log logs/error.log; #http定义代码主区域 http { include mime.types; default_type application/octet-stream; #定义Nginx的访问日志功能 #Nginx会有一个accses.log功能,查看用户访问的记录 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; keepalive_timeout 65; #开启gzip压缩传输 gzip on; #虚拟主机1 定义一个 斗鱼网站 server { #定义Nginx的访问入口端口,访问地址是 192.168.11.37:80 listen 80; #定义网站的域名www.woshidouyu.tv #如果没有域名,就填写服务器的ip地址 192.168.11.37 server_name www.woshidouyu.tv; #Nginx的url域名匹配 #只要请求来自于www.woshidouyu.tv/111111111 #只要请求来自于www.woshidouyu.tv/qweqwewqe #只要请求来自于www.woshidouyu.tv/qweqwewqe #最低级的匹配,只要来自于www.woshidouyu.tv这个域名,都会走到这个location location / { #这个root参数,也是关键字,定义网页的根目录 #以Nginx安装的目录为相对路径 /opt/Nginx112/html #可以自由修改这个root定义的网页根目录 root html; #index参数定义网站的首页文件名,默认的文件名 index index.html index.htm; } #错误页面的优化 error_page 400 401 402 403 404 /40x.html; } }
Nginx多虚拟主机的配置
1. 在Nginx.conf中添加两个虚拟主机标签 server{} 配置文件如下 server { listen 80; server_name qishijd.com; location / { root /opt/jd; index index.html index.htm; } error_page 404 /40x.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 80; server_name qishitb.com; location / { root /opt/tb; index index.html; } } 2. 重启Nginx,加载新的配置 Nginx -s stop Nginx 3. 修改windows的本地hosts解析文件,用于域名解析 windows的hosts文件路径 C:\Windows\System32\drivers\etc 写入如下配置 192.168.11.37 qishitb.com 192.168.11.37 qishijd.com 4. 准备两个虚拟主机的 index.html文件 /opt/jd/index.html 写入 我是京东 /opt/tb/index.html 写入 我是淘宝 5. 在windows浏览器中,查看两个域名对应到的虚拟主机 分别访问qishijd.com 域名 然后访问qishitb.com 域名,查看网站的资料的内容变化 Nginx的错误页面优化的功能: 通过error_page参数定义错误页面的 html文件 server { listen 80; server_name qishijd.com; location / { root /opt/jd; index index.html index.htm; } #这个错误页面就应该存放在 /opt/jd/40x.html error_page 404 /40x.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
Nginx访问日志功能
配置方式
-
修改Nginx.conf配置文件,打开如下配置注释
Nginx 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;
Nginx拒绝访问功能
在某一个虚拟主机下,顶一个deny参数,可以拒绝ip地址对虚拟主机的访问
server { listen 80; server_name qishijd.com; #只要192.168.11.37这个ip访问 qishijd.com/ location / { #deny 192.168.11.0/24; root /opt/jd; index index.html index.htm; } error_page 404 /40x.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
Nginx的负载均衡
其实就是压力分担
集群是什么
一堆服务器做一件事集群性能很高
淘宝本来的核心支付服务器是小型机,非常昂贵,且难以维护
后来都讲 服务器更换为集群架构
一堆便宜的服务器,维护者一个功能运转高可用
单点机器很可能宕机
集群单机机器宕机,不会影响整体的运转
1.实验如下 准备三台机器 机器1 Nginx负载均衡器(发牌的荷官) 192.168.11.158 Nginx.conf配置如下 #定义Nginx负载均衡池,里面默认是轮训算法 #也可以用weight 权重算法 #也可以用ip_hash 算法 upstream Nginx_pools { server 192.168.11.37 weight=10; server 192.168.11.167 ; } server { listen 80; server_name 192.168.11.158; #charset koi8-r; #access_log logs/host.access.log main; #在这里进行反向代理配置 #192.168.11.158/ location / { proxy_pass http://Nginx_pools; } } 机器2 准备Nginx 返回页面数据 192.168.11.37 Nginx.conf配置如下 server { listen 80; server_name 192.168.11.37; location / { root /opt/jd; index index.html index.htm; } error_page 404 /40x.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 机器3 也准备Nginx 返回页面数据 192.168.11.167 server { listen 80; server_name 192.168.11.167; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } 2.分别启动三台机器,三个Nginx服务 3.在windows中访问负载均衡器的地址,查看请求分发, 访问 192.168.11.158