Linux05 /nginx
1. nginx安装、配置
-
nginx的安装/启动
1、编译安装nginx
1.yum install nginx(自动解决依赖),自动将各种包安装到了对应的位置 查看yum安装各个包所在的位置:rpm -ql nginx 2.源代码编译安装(优秀,自由选择软件版本,自定义第三方功能比如开启https)--- 使用 3.rpm手动安装(垃圾)
# 编译安装步骤: 1.下载tengine/nginx源码包 wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz wget -c https://nginx.org/download/nginx-1.12.0.tar.gz 2.解压缩源码: tar -zxvf tengine-2.3.2.tar.gz 3.编译三部曲 第一曲:指定安装路径 ./configure --prefix=/opt/tbnginx/ 第二曲:开始编译,生成makefile make 第三曲:开始安装 make install 4.配置nginx的环境变量,需要把PATH写入/etc/profile,每次开机都加载 vim /etc/profile PATH="/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tbnginx/sbin" 5.手动读取,让PATH生效 source /etc/profile
2、启动nginx,检查进程,端口
直接输入nginx命令,第一次是启动nginx nginx -s stop # 停止 nginx -s reload # 平滑重启,不停止进程,重新读取配置文件 nginx -t # 检测nginx.conf语法是否正确,更安全
-
nginx的配置文件
1、nginx文件夹下文件介绍
[root@s24_linux tbnginx]# ls conf 存放nginx的配置文件 html 存放nginx静态文件的 logs nginx的运行日志,错误日志,访问日志 sbin 存放可执行命令
2、nginx配置文件
# server{}是定义虚拟主机功能 server { # 定义网站的端口 listen 80; # 定义网站匹配的域名 server_name localhost; # server_name _; # server_name www.lbzhk.com; # 定义虚拟主机的访问日志功能,记录用户的ip,以及请求信息,和爬虫代理后面的真实ip等功能 access_log logs/host.access.log main; access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main; # location作用是匹配url,如同 django的 url.py功能一样 # 最低级匹配,当请求时 192.168.16.85:81/ 就进入如下location location / { # root关键词 是定义静态文件存放目录的 root /opt/html; # index参数,定义网站首页文件名的 index index.html index.htm; } # location可以定义多个,想让 192.168.16.85:81/static/js/jquery.js location /static { # 给路径添加别名 alias /opt/crm/static/; }
2. nginx的多虚拟主机功能
-
简单概述:
1、一台服务器,基于域名的不同,访问不同的网站资料,也就是准备2个server{}的定义
2、修改本地的hosts文件 C:WindowsSystem32driversetchosts
-
第一个server{}虚拟主机 ,www.s1.com
server { # 定义网站的端口 listen 80; # 定义网站匹配的域名 server_name www.s1.com; # server_name _; # 定义虚拟主机的访问日志功能,记录用户的ip,以及请求信息,和爬虫代理后面的真实ip等功能 access_log logs/host.access.log main; access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main; # location作用是匹配url,如同 django的 url.py功能一样 # 最低级匹配,当请求时 192.168.16.85:81/ 就进入如下location location / { # root关键词 是定义静态文件存放目录的 root /opt/s1html; # index参数,定义网站首页文件名的 index index.html index.htm; } # 当你的请求时 www.s24pian.com/static/55kai.jpg location /static { # 给路径添加别名 alias /opt/crm/static/; } }
-
第二个虚拟主机 www.s2.com
server { listen 80; server_name www.s2.com; location / { root /opt/s2html; index index.html; } }
3. nginx的访问日志功能,404页面功能
-
nginx的访问日志功能,404页面功能,都是打开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; access_log "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G" main;
-
404错误页面优化(找到一个server{}标签的配置,添加一行代码即可 )
location / { # root关键词 是定义静态文件存放目录的 root /opt/s1; # index参数,定义网站首页文件名的 index index.html index.htm; } # nginx错误页面的定义 error_page 404 /404.html;
4. nginx的反向代理、负载均衡
-
简述
浏览器客户端 + nginx反向代理 | 躲在防火墙后面 服务器+django
1.需要准备3台机器 1是客户端,发请求的 2是代理服务器,需要安装nginx,实现代理转发功能 3是资源服务器,提供数据的 2.正确的操作应该是: 准备一个windows机器,两个linux机器(一个是安装nginx用作代理,一个启动django提供数据) 3.在一台linux上,启动一个nginx,第一个server{}虚拟主机标签,作用是反向代理 第二个server{}虚拟主机标签,模拟是另一台linux,提供数据的
-
配置反向代理
server { listen 80; server_name _; location / { # 反向代理的参数 proxy_pass http://127.0.0.1:81; } error_page 404 /404.html; }
-
nginx负载均衡
环境准备,准备四台机器 第一台是window客户端,用于浏览器法请求 第二台个是nginx,安装nginx,进行请求分发,负载均衡 第三台是服务端,运行django 第四台也是服务端,运行django代码
-
nginx负载均衡的环境准备,nginx.conf配置文件如下
# 通过upstream关键词,定义服务器地址池 upstream s1server { server 127.0.0.1:81; server 127.0.0.1:82; server 127.0.0.1:83; } # 定义第一个虚拟主机 server{} ,功能是 进行反向代理,负载均衡 server { listen 80; server_name _; location / { proxy_pass http://s1server; } } # 第二个server,模拟第一台django server { listen 81; server_name _; location / { root /opt/s1django1; index index.html; } } # 定义第三个server,模拟第二台django server { listen 82; server_name _; location / { root /opt/s1django2; index index.html; } } # 定义第四个server,模拟第三台django,讲道理,这三台django应该提供一样的数据 server { listen 83; server_name _; location / { root /opt/s1django3; index index.html; } }
-
nginx的负载均衡规则
1.轮训机制 ,每个机器,解析一次 2.权重机制 ,哪台机器的权重高,请求优先发给谁,有权重比例设置 3.ip_hash ,针对用户的ip地址得到哈希值,永久发给一台机器 ,ip哈希方式,不得和权重一起用 4.url_hash ,一般不会使用 # 通过upstream关键词,定义服务器地址池
# 权重机制示例: upstream s24server { server 127.0.0.1:81 weight=1; server 127.0.0.1:83 weight=4; } # ip_hash示例: upstream s24server { server 127.0.0.1:81 ; server 127.0.0.1:83 ; ip_hash; }