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
启动nginx,进入sbin目录,找到nginx启动命令
cd sbin ./nginx #启动 ./nginx -s stop #关闭 ./nginx -s reload #平滑重启 ,修改了nginx.conf之后,可以不重启服务,加载新的配置
- 分析nginx的工作目录,内容
[root@xxy 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的负载均衡
其实就是压力分担
集群是什么
一堆服务器做一件事集群性能很高
淘宝本来的核心支付服务器是小型机,非常昂贵,且难以维护
后来都讲 服务器更换为集群架构
一堆便宜的服务器,维护者一个功能运转高可用
单点机器很可能宕机
集群单机机器宕机,不会影响整体的运转
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