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,退出虚 ...
随机推荐
- 1336 - Sigma Functio
1336 - Sigma Function Sigma function is an interesting function in Number Theory. It is denoted by t ...
- xmake v2.3.1 发布, 无缝对接其他构建系统
最近对xmake内部做了不少的重构来改进,并且新增了不少实用的新特性,欢迎来体验. 项目源码 官方文档 一些新特性: 一键编译其他构建系统维护的项目,实现无缝对接,并且支持交叉编译(比如autotoo ...
- Springboot feign 传递request信息
基础实现 requestInterceptor 实现类中添加信息 public class NativeFeignConf { @Bean public RequestInterceptor getR ...
- asp.net core 3.x Identity
一.前言 这方面的资料很多,重复的写没必要,但是最近一直在学习身份验证和授权相关东东,为了成体系还是写一篇,主要是从概念上理解identity系统. 参考:https://www.cnblogs.co ...
- C++中的public、protected和private
访问权限控制 一个类的public的成员变量.成员函数,可以通过类的实例变量进行访问. 一个类的protected的成员变量.成员函数,无法通过类的实例变量进行访问,但是可以通过类的友元函数.友元类进 ...
- Azure Media Services -可提供视频点播(VOD)
Azure Media Services 提供直播/VOD点播相关的功能. •提供编码和打包以适用于各种设备播放视频(IOS/Android/web等). •向大量在线观众流式传输实时直播,例如活动 ...
- 简单IOC容器实现
前言 本文是为了学习Spring IOC容器的执行过程而写,不能完全代表Spring IOC容器,只是简单实现了容器的依赖注入和控制反转功能,无法用于生产,只能说对理解Spring容器能够起到一定的作 ...
- c#winform自定义窗体,重绘标题栏,自定义控件学习
c#winform自定义窗体,重绘标题栏 虽然现在都在说winform窗体太丑了,但是我也能尽量让桌面应用程序漂亮那么一点点话不多说,先上图 重绘标题栏先将原生窗体设置成无边框,FormBoderSt ...
- python数据类型(第三弹)
本文着重介绍python语言的两种数据类型——列表和元组 列表 相比于整型.浮点型等数据类型,列表是一个复合数据类型,它更像一个容器,可以容纳多种不同类型的数据. 如上图:列表a中装进去了字符串&qu ...
- Node.js核心模块-http
通过node中的http模块可以创建编写服务器 引入 const http = require('http') http举例使用: const http = require('http') //引入 ...