ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx之负载均衡,服务器代理,配置多虚拟主机,安装

2021-03-30 20:32:09  阅读:119  来源: 互联网

标签:opt index 虚拟主机 nginx server Nginx html 服务器


1 nginx入门

1.1 WEB框架

django 大而全, 功能特别多 form表单 , ORM, 中间件 笨重,臃肿 600/s

flask 轻量级的,小而精, 它使用的都是第三方模块进行拼接起来的 4988/s

tornado 支持异步, 处理用户请求过来数据不用等待,类似于协程 2138/s

sanic python3.5+uvloop 33342/s

 

WEB服务器和web框架的关系

WEB框架: 主要是用来处理用户的请求

WEB服务器: 接收HTTP请求(例如www.pythonav.cn/xiaocang.jpg)并返回数据, web服务器不和数据库打交道

 

 

1.2 WEB服务器

nginx 开源的,支持高性能,高并发的

apache nginx他父亲

IIS(windows下面的WEB Server)

1.3 查看WEB服务器信息

使用curl -I 命令查看taobao和JD的WEB服务器

 

1.4 nginx的优点:

1.4.1 占有内存少,并发能力强
1.4.2 处理静态文件

静态文件与动态文件的区别

静态文件: css js jpg png mp4
动态数据: 网站会请求后端的数据库接口,获取最新的数据,这些数据就是动态数据
1.4.3 百度、京东、新浪、网易、腾讯、淘宝都在用nginx
1.4.4 一台机器只有一个80端口,假如我们想要跑多个WEB服务器呢?

 

2 安装nginx步骤

2.0 首先卸载掉之前安装的nginx
yum remove nginx
2.1 安装nginx需要的依赖库
yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
2.2 下载安装nginx源码包
cd /opt
wget -c https://nginx.org/download/nginx-1.16.0.tar.gz
2.3.解压缩源码(还是在/opt目录下)
tar -zxvf nginx-1.16.0.tar.gz
2.4.释放编译文件 开启nginx状态监测功能
cd /opt/nginx-1.16.0
./configure --prefix=/opt/nginx116 --with-http_ssl_module --with-http_stub_status_module
2.5 编译安装
make && make install
2.6.启动nginx,进入sbin目录,找到nginx启动命令
cd /opt/nginx116/sbin
./nginx #启动
./nginx -s stop #关闭
./nginx -s reload # 平滑重启 ,修改了nginx.conf之后,可以不重启服务,加载新的配置
2.7 查看nginx运行状态
查看端口是否运行: netstat -tunlp
查看进程是否运行: ps -ef | grep nginx
2.8 nginx目录下的文件
conf 存放nginx所有配置文件的目录,主要nginx.conf
html 存放nginx默认站点的目录,如index.html、error.html等
logs 存放nginx默认日志的目录,如error.log access.log
sbin 存放nginx主命令的目录,sbin/nginx
2.9 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这个域名,都会走到这个location
      location / {
          #这个root参数,也是关键字,定义网页的根目录
          #以nginx安装的目录为相对路径 /opt/nginx112/html
          #可以自由修改这个root定义的网页根目录
          root   html;
          #index参数定义网站的首页文件名,默认的文件名
          index index.html index.htm;
      }
      #错误页面的优化(只要是遇到前面4系列的错误,就会直接跳转到相对目录下的40x.html页面)
      error_page 400 401 402 403 404   /40x.html;
  }
}
2.10 nginx启动出现错误的情况

如果你在平滑重启nginx时出现以下情况的话,说明你的nginx没有启动

 

解决方案:

# 只需要将nginx启动起来即可
/opt/nginx196/sbin/nginx

 

 

3 nginx错误页面

3.1 配置nginx错误页面

vim /opt/nginx112/conf/nginx.conf
修改server代码块
  server {
      listen       80;
      server_name www.qishihuya.com;

      location / {
          root   /opt/www/qishihuya;?????????????
          index index.html index.htm;
      }
      #error_page   500 502 503 504 /50x.html;
      error_page   400 402 403 404 /40x.html;
      location = /40x.html {
          root   html;
      }
  }

平滑重启nginx
/opt/nginx112/sbin/nginx -s reload

 

 

4 nginx错误页面优化

打开百度或其他网站,随便输入一个不存在的链接,就可以访问到错误页面
右键点击页面空白处,查看网页源代码
拷贝源代码,粘贴到/opt/nginx112/html/40x.html下面去
再访问我们的网站,随便输入一个不存在的链接, 就可以访问到这个错误页面
http://192.168.1.40/asldfjasd

 

6 nginx限制网站来源IP访问

 

如果想要在本地访问一个域名, 可以更改本机hosts文件

windows下

c:\\windows\system32\drivers\etc\hosts

linux下

/etc/hosts????

nginx状态检测功能

1 在虎牙或者其他server代码块添加以下配置
location /status {
    # 开启nginx状态检测功能
    stub_status on;
}

 

2 平滑重启nginx
/opt/nginx196/sbin/nginx -s reload

 

7 配置nginx多虚拟主机

7.1 效果:

(1) 访问三个不同的域名,显示三个不同的网站

 

7.2 修改配置文件

   worker_processes  5;

#error_log logs/error.log;

events {
  worker_connections 1024;
}

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;
  keepalive_timeout 65;
  #gzip on;
  server {
      listen       80;
      server_name www.qishi5douyu.com;
       
      location / {
          root   /opt/web_server/douyu;
          index index.html index.htm;
      }
      #error_page 404             /404.html;
      error_page   500 502 503 504 /50x.html;
      location = /50x.html {
          root   html;
      }  
  }  
  server {
      listen 80;
      server_name www.qishi5huya.com;
      location /{
          root /opt/web_server/huya;
          index indcdex.html;
      }  
  }  
  server {
      listen 80;
      server_name www.qishi5zhanqi.com;
      location /{
          root /opt/web_server/zhanqi;
          index index.html;
      }  
  }  

}

7.3 在服务器上创建三个目录

cd /opt
rm -rf web_server
mkdir -p web_server/huya
mkdir -p web_server/douyu
mkdir -p web_server/zhanqi
touch web_server/huya/index.html
touch web_server/huya/index.html
touch web_server/huya/index.html
分别打开这三个index.html文件
vim index.html
分别添加三个直播网站的源代码内容
然后保存退出

7.4 修改本机hosts文件

c:\\windows\system32\drivers\etc\hosts

添加以下三行解析记录

10.0.3.156 www.qishi8.com
10.0.3.156 www.qishi8huya.com
10.0.3.156 www.qishi8zhanqi.com

7.5 平滑重启nginx

/opt/nginx196/sbin/nginx -s reload

 

8 Nginx代理功能

8.1 生活中的代理有哪些

租客租房 ————> 中介(Q房网,链家, 家家顺,中原地产, 泊寓, 自如, 蛋壳, 贝壳) ————> 房东

买家 ————> 代购(微商, 服务器代理商, 等等) ————> 店铺(香港的店铺, 供应商, 老宝)

NAT转换 (Network Address Translation,网络地址转换)

局域网IP(只能在局域网进行通信的IP地址)

A类:10.0.0.0-10.255.255.255
B类:172.16.0.0-172.31.255.255
C类:192.168.0.0-192.168.255.255

8.2 实现一个反向代理

8.2.1 实验效果:

在windows中访问代理服务器,然后让代理服务器去拿web服务器的数据

请求数据: windows ——> 10.0.3.156(假如公网IPwww.qishi8huya.com) ——> 10.0.3.2(由它返回数据) 返回数据: windows <—— 10.0.3.156 <—— 10.0.3.2

机器准备,两台服务器

反向代理服务器 10.0.3.156

淘宝服务器 10.0.3.2

8.2.2 修改代理服务器10.0.3.156的配置文件
vim /opt/nginx196/conf/nginx.conf
在location代码块下添加一行数据
proxy_pass http://10.0.3.2:8060;
8.2.3 重启代理服务器的nginxi
/opt/nginx196/sbin/nginx -s reload
8.2.4 访问代理服务器的IP: 192.168.12.139
访问的结果是192.168.12.200返回的数据即可 

9 Nginx负载均衡

9.1 负载均衡原

9.2 配置负载均衡服务器

9.2.1 实验背景
有三台机器 一台为nginx代理服务器(负载均衡调度器), 另外两台为WEB服务器
10.0.3.156    # 负载均衡调度器
10.0.3.2   # WEB服务器1
10.0.3.212   # WEB服务器2
# WEB服务器3
9.2.2 完成效果

用户访问10.0.3.156,由nginx代理服务器通过负载均衡调度器分别分配到两个WEB服务器,实现负载均衡

9.2.3 准备三台机器
10.0.3.156    # 负载均衡调度器
10.0.3.2   # WEB服务器1
10.0.3.212   # WEB服务器2
9.2.4 两个WEB服务器可以正常访问
访问web服务器1返回“代噶好,我系帅帅刘 我真的是1.40这台机器”
访问web服务器2返回“MMP 我TM是文龙”
9.2.5 在nginx代理服务器(负载均衡调度器)上面做如下配置:
# 在http代码块里面,添加配置
upstream qishi8_pool {
	server 10.0.3.2:8060;
	server 10.0.3.212;
}

在location代码块内,添加
location / {
    proxy_pass http://qishi8_pool;
    root   html;
    index  index.html index.htm;
}

9.2.6 分别平滑重启三台机器的nginx服务
/opt/nginx196/sbin/nginx -s reload
9.2.7 访问10.0.3.156就可以看到,WEB1和WEB2交替返回数据
9.2.8 配置权重

在upstream里面配置weight的数值,可以调整服务器的请求权重

可以通过以下几种方式进行权重的配置

调度算法      概述
轮询       按时间顺序逐一分配到不同的后端服务器(默认)
weight      加权轮询,weight值越大,分配到的访问几率越高
ip_hash      每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
url_hash     按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn   最少链接数,那个机器链接数少就分发

 要点:

1.完成nginx的编译安装
2.完成nginx的多虚拟主机
提供
www.qishihuya.com
www.qishidouyu.com
www.qishiqie.com
访问到不同的页面
3.完成nginx的 404错误页面和错误页面优化功能(用淘宝的错误页面)
4.完成nginx的状态检测页面配置
5.完成nginx的日志功能
6.完成nginx的拒绝访问功能
7.完成nginx反向代理功能
8.完成nginx的负载均衡配置 (项目部署就是通过nginx转发请求给uwsgi的)

 

标签:opt,index,虚拟主机,nginx,server,Nginx,html,服务器
来源: https://www.cnblogs.com/yhxy/p/14598669.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有