linux--nginx学习
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 ,不用
linux--nginx学习的更多相关文章
- Nginx学习系列二Linux下Nginx实现负载均衡
关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...
- Linux 内核学习的经典书籍及途径
from:http://www.zhihu.com/question/19606660 知乎 Linux 内核学习的经典书籍及途径?修改 修改 写补充说明 举报 添加评论 分享 • 邀请回答 ...
- Nginx学习笔记4 源码分析
Nginx学习笔记(四) 源码分析 源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_ ...
- Nginx学习笔记~目录索引
回到占占推荐博客索引 前几天整理了<Docker的学习笔记索引>,受到了很多朋友的关注,今天把Nginx的文章也整理一下,以后将永久更新,像大叔之前的<EF文章系列>,< ...
- Asp.net Core 打包发布 (Linux+Nginx)
如果你觉得如下这些文章对你有帮助,请点击链接支持作者原创 http://www.cnblogs.com/savorboard/ .Net Core SDK 命令介绍 前言 本篇主要介绍 asp.n ...
- centos7安装Lnmp(Linux+Nginx+MySql+Php+phpMyAdmin+Apache)
centos7安装Lnmp(Linux+Nginx+MySql+Php)及Apache Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx是一个高性能的HTTP和反向代理服务器,Ng ...
- Linux 系统学习梳理_【All】
第一部分---基础学习 00.Linux操作系统各版本ISO镜像下载 00.Linux系统下安装Vmware(虚拟机) 00.Linux 系统安装[Redhat] 00.Linux 系统安装[Cent ...
- Linux服务器学习(二)
昨天简单了解了linux的基础命令,今天学习linux搭建环境(安装文件,配置文件)及权限操作. 一.搭建lnmp环境 lnmp指Linux+Nginx+Mysql+PHP Ubuntu安装文件命令为 ...
- Linux - nginx基础及常用操作
目录 Linux - nginx基础及常用操作 Tengine淘宝nginx安装流程 nginx的主配置文件nginx.conf 基于域名的多虚拟主机实战 nginx的访问日志功能 网站的404页面优 ...
- Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器
目录 Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器 crm django项目部署流程 使用supervisro启动uwsgi,退出虚 ...
随机推荐
- Windwos日志分析
Windows日志分析工具 查看系统日志方法: 在“开始”菜单上,依次指向“所有程序”.“管理工具”,然后单击“事件查看器” 按 "Window+R",输入 ”eventvwr.m ...
- codewars--js--Two Joggers--求最小公倍数、最大公约数
问题描述: Two Joggers Description Bob and Charles are meeting for their weekly jogging tour. They both s ...
- redis集群redis-cluster搭建
redis集群搭建--参考微信公众号(诗情画意程序员):https://mp.weixin.qq.com/s/s5eJE801TInHgb8bzCapJQ 这是来自redis官网的一段介绍,大概意思就 ...
- P3078 [USACO13MAR]Poker Hands S
链接:Miku ---------------- 这道题和线段树有什么关系 --------------- 很简单的贪心,如果一堆牌比左边的大,那么肯定是要加上他的差的 反正,顺手出掉就可以了 --- ...
- Windows2008R2 一键安全优化脚本
::author vim ::QQ 82996821 ::filename Windows2008R2_safe_auto_set.bat :start @echo off color 0a ...
- MongoDB高可用架构集群管理(一)
MongoDB数据库核心的两个特点:第一个特点是副本集的自动切换,保证数据的高可靠.服务的高可用:第二个特点是自动分片.服务的横向扩展能力. (一)副本集架构 MongoDB的副本集是一组保持相同数据 ...
- css flex弹性布局学习总结
一.简要介绍 flex( flexible box:弹性布局盒模型),是2009年w3c提出的一种可以简洁.快速弹性布局的属性. 主要思想是给予容器控制内部元素高度和宽度的能力.目前已得到以下浏览器支 ...
- HTML概念、语法及常用基础标签
HTML基础语法 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- day 12 函数
函数 函数的定义和调用 def 函数名(形参): 函数体 return 返回值 调用 函数名(实参) 站在形参的角度上: 位置参数, *args, 默认参数(陷阱), 关键字参数, **kwargs ...
- Fhq Treap [FhqTreap 学习笔记]
众所周知 Fhq Treap 是 fhq 神仙研究出来的平衡树- 具体实现 每个点实现一个 \(\text{rnd}\) 表示 rand 的值 为什么要 rand 呢 是为了保证树高为 \(\log ...