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
5 nginx 访问日志功能
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) 访问三个不同的域名, 显示三个不同的网站
(2) 三个网站互不影响
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 index.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 重启代理服务器的 nginx
/opt/nginx196/sbin/nginx -s reload
8.2.4 访问代理服务器的 IP: 192.168.12.139
访问的结果是 192.168.12.200 返回的数据即可
8.2.5 分别在代理服务器和斗鱼服务器上查看日志
在代理服务器上查看
在斗鱼服务器上查看
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 最少链接数, 那个机器链接数少就分发
来源: http://www.bubuko.com/infodetail-3361309.html