linux--nginx学习
程序员文章站
2022-06-15 18:20:36
nginx 1.nginx安装编译 2.下载tengine 3.解压缩 4.编译 4.1指定安装路径 4.2开始编译 4.3开始安装 5.配置环境变量 6.启动nginx,检查进程,端口 7.nginx的配置文件 nginx的静态文件服务功能 nginx.conf 中定义的server{}虚拟主机关 ......
nginx
1.nginx安装编译
1.yum install nginx(自动解决依赖) 2.源代码编译安装(优秀,*选择软件版本,自定义第三方功能比如开启https) 3.rpm手动安装(垃圾)
2.下载tengine
最好别再root在操作,在opt在执行该条命令 wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
3.解压缩
ls查看下载后的文件 解压缩:tar -zxvf tengine-2.3.2.tar.gz 进入解压缩后的文件:cd tengine(解压缩后的)
4.编译
4.1指定安装路径
./configure --prefix=/opt/tbnginx/ /opt/tbnginx/ 为安装路径
4.2开始编译
make命令 生成makefile
4.3开始安装
make install
5.配置环境变量
进入到 tengine下的sbin目录 需要把path写入/etc/profile #每次开机都加载 vim /etc/profile 把path写入到环境变量中: path="/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tbnginx/sbin" 手动读取,让path生效 source /etc/profile
6.启动nginx,检查进程,端口
检查进程:ps aux | grep nginx 检查端口:netstat -tunlp | grep 80 直接输入nginx命令,第一次是启动nginx nginx -s stop #停止 nginx -s reload #平滑重启,不停止进程,重新读取配置文件 nginx -t #检测nginx.conf语法是否正确,更安全 在浏览器中输入ip:端口访问
7.nginx的配置文件
[root@bogon tbnginx]# ls conf 存放nginx的配置文件 html 存放nginx静态文件的 logs nginx的运行日志,错误日志,访问日志 sbin 存放可执行命令
nginx的静态文件服务功能
nginx.conf 中定义的server{}虚拟主机关键词定义
1. [root@bogon tbnginx]# cd tbnginx/ [root@bogon tbnginx]# cd html/ 2. [root@bogon html]# ls 50x.html index.html 执行 vim index.html #进入该问文件的编辑模式
server{}定义虚拟主机功能
server { #定义网站的端口 listen 81; #定义网站匹配的域名 server_name localhost; #server_name _; #server_name www.mypython.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/xx.html; #index参数,定义网站首页文件名的 index index.html index.htm; } # 这个location可以定义多个,比如 你想让 192.168.16.85:81/static/js/luffy.js location /static { #给路径添加别名 alias /opt/crm/static/;}
nginx的多虚拟主机功能
一台服务器,基于域名的不同,访问不同的网站资料
也就是准备2个server{}的定义
本地的hosts文件
c:\windows\system32\drivers\etc\hosts
第一个server{ } 虚拟主机 ,www.pian.com
server { #定义网站的端口 listen 80; #定义网站匹配的域名 server_name www.pian.com; #server_name _; #server_name www.mypython.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/pian; #index参数,定义网站首页文件名的 index index.html index.htm; } #当你的请求时 www.pian.com/static/55kai.jpg location /static { #给路径添加别名 alias /opt/crm/static/; #http://www.pian.com/static/360wallpaper.jpg } }
第二个虚拟主机 www.xxlol.com
server { listen 80; server_name www.xxlol.com; location / { root /opt/xxlol; index index.html; } }
nginx的访问日志功能
打开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; 进入到cd tbnginx/logs 实时监测 :tail -f access.log 当再次访问的时候logs就会多一条 记录
nginx 404错误页面优化
location / { #这个root关键词 是定义静态文件存放目录的 root /opt/pian; #index参数,定义网站首页文件名的 index index.html index.htm; } error_page 404 /404.html; 对/404.html进行编辑或添加新的内容 keepalive_timeout : 60
nginx配置反向代理
需要准备3台机器 1是客户端,发请求的 2是代理服务器,需要安装nginx,实现代理转发功能 3是资源服务器,提供数据的 正确的操作应该是 准备一个windows机器,两个linux机器(一个是安装nginx用作代理,一个启动django提供数据) 我考虑到大家机器不行 解决办法 在一台linux上,启动一个nginx,第一个server{}虚拟主机标签,作用是反向代理 第二个server{}虚拟主机标签,模拟是另一台linux,提供数据的 浏览器 -> nginx -> django 浏览器 <- nginx <- django
配置反向代理
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代码 在一个linux机器上,安装一个nginx软件,通过多个server{}模拟多台机器的工作
nginx的环境准备,nginx.conf配置文件
#通过upstream关键词,定义服务器地址池 upstream server { 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://myserver; } } #第二个server,模拟第一台django server { listen 81; server_name _; location / { root /opt/django1; index index.html; } } #定义第三个server,模拟第二台django server { listen 82; server_name _; location / { root /opt/django2; index index.html; } } #定义第四个server,模拟第三台django,讲道理,这三台django应该提供一样的数据 server { listen 83; server_name _; location / { root /opt/django3; index index.html; } }
nginx的负载均衡规则
1.轮训机制 ,每个机器,解析一次 2.权重机制 ,哪台机器的权重高,请求优先发给谁,有权重比例设置 upstream myserver { server 127.0.0.1:81 weight=1; # weight权重 安比例分配 #server 127.0.0.1:82 weight=3; server 127.0.0.1:83 weight=4; } 3.ip_hash ,真对用户的ip地址得到哈希值,永久发给一台机器 ,ip哈希方式,不得和权重一起用 #通过upstream关键词,定义服务器地址池 upstream myserver { server 127.0.0.1:81 ; #server 127.0.0.1:82 ; server 127.0.0.1:83 ; ip_hash; } 4.url_hash ,不用