目录html
nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是一个俄罗斯人lgor sysoev开发的,做者将源代码开源出来供全球使用。 nginx比它大哥apache性能改进许多,nginx占用的系统资源更少,支持更高的并发链接,有更高的访问效率。 nginx不可是一个优秀的web服务软件,还能够做为反向代理,负载均衡,以及缓存服务使用。 安装更为简单,方便,灵活。 nginx能够说是很是nb了
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了不少高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等获得了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。前端
1.淘宝nginx的学习使用,安装node
下载源码包python
cd /opt wget -c http://tengine.taobao.org/download/tengine-2.2.0.tar.gz
2.卸载掉以前,学习yum时候,安装的nginx软件,linux
yum remove nginx -y
3。解决编译安装nginx的软件依赖nginx
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
4.解压缩源码包,安装web
解压sql
tar -zxvf tengine-2.2.0.tar.gz
源码编译安装三部曲apache
cd tengine-2.2.0 1.释放makefile ./configure --prefix=/opt/tnginx220 cd tnginx220 2.编译nginx make 3.编译安装 make install
4.编译完成后,tnginx就能够用了django
学习nginx的代码目录结构
[root@master tnginx220]# pwd /opt/tnginx220 [root@master tnginx220]# [root@master tnginx220]# ll total 8 drwx------. 2 nobody root 6 Mar 11 08:51 client_body_temp drwxr-xr-x. 2 root root 4096 Mar 11 08:50 conf #放nginx全部配置文件的地儿 drwx------. 2 nobody root 6 Mar 11 08:51 fastcgi_temp drwxr-xr-x. 2 root root 40 Mar 11 08:50 html #存放前端 html文件的 drwxr-xr-x. 2 root root 4096 Mar 11 08:50 include drwxr-xr-x. 2 root root 41 Mar 11 08:52 logs #nginx的日志文件夹 drwxr-xr-x. 2 root root 6 Mar 11 08:50 modules drwx------. 2 nobody root 6 Mar 11 08:51 proxy_temp drwxr-xr-x. 2 root root 35 Mar 11 08:50 sbin #存放nginx二进制命令的 drwx------. 2 nobody root 6 Mar 11 08:51 scgi_temp drwx------. 2 nobody root 6 Mar 11 08:51 uwsgi_temp
5.启动淘宝nginx
./nginx
6.添加linux的PATH变量,快捷使用nginx命令
echo $PATH PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tnginx220/sbin" 永久添加变量环境: vim ~/.bash_profile 修改/etc/profile文件,经过vi或vim增长变量
http内核模块 //公共的配置定义在http{} http { //http层开始 ... //使用Server配置网站, 每一个Server{}表明一个网站(简称虚拟主机) 'server' { listen 80; //监听端口, 默认80 server_name localhost; //提供服务的域名或主机名 access_log host.access.log //访问日志 //控制网站访问路径 'location' / { root /usr/share/nginx/html; //存放网站代码路径 index index.html index.htm; //服务器返回的默认页面文件 } //指定错误代码, 统必定义错误页面, 错误代码重定向到新的Locaiton error_page 500 502 503 504 /50x.html; } ... //第二个虚拟主机配置 'server' { ... } include /etc/nginx/conf.d/*.conf; //包含/etc/nginx/conf.d/目录下全部以.conf结尾的文件 } //http层结束
一个服务器上,能够运行两个乃至多个网站
注意: 防火墙端口问题
1.环境准备,准备好2个域名 ,这里是模拟的本地域名解析 ,找到hosts文件
因为咱们是想配置windows,能够访问不一样的 域名,所以配置windows的hosts
192.168.11.65 dnf.com 192.168.11.65 xiaohua.com 编辑文件 C:\Windows\System32\drivers\etc\hosts 写入
2.配置nginx支持多虚拟主机
修改nginx.conf 修改2个server虚拟主机的配置 dnf的虚拟主机 server { listen 80; server_name dnf.com; # 当咱们访问s17dnf.com:80/的时候,就进入这个虚拟主机,且找到这个location,进行网站资源分配 location / { root /opt/s17dnf/; index index.html; } } 第二个虚拟主机,s17校花网 server{ listen 80; server_name xiaohua.com; location / { root /opt/s17xiaohua/; index index.html; } } 分别修改两个网址的根目录数据 mkdir -p /opt/{s17dnf,s17xiaohua} 分别在/opt/s17dnf/建立index.html /opt/s17xiaohua/建立index.html
3.修改完配置文件,检测语法
nginx -t
4.平滑加载nginx(不重启nginx,从新读取配置文件)
nginx -s reload
编辑 nginx.conf
打开注释
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; ...
1.编辑nginx.conf ,配置以下:
server { listen 80; server_name s17dnf.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root /opt/s17dnf; index index.html index.htm; } #打开这个参数的配置,开启错误页面 error_page 404 /404.html; error_page 401 402 403 /403.html; }
2.编辑/opt/s17dnf下 HTML文件
location / { deny 你想限制的ip; root /opt/s17dnf; index index.html index.htm; }
1.实验环境准备
192.168.11.229 真实资源服务器,模拟django ,理解为房东的房屋资源 192.168.11.136 nginx代理服务器 ,理解为 房屋中介
2.思路
咱们做为客户端,访问 代理服务器, ,代理服务器,将资源服务器上的东西,进行返回
3.配置 资源服务器
192.168.11.229 s17dnf.com
4.配置代理服务器
192.168.11.136 修改192.168.11.136这台机器的nginx配置文件,开启反向代理 配置nginx.conf的server{}以下 server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { #反向代理参数,当咱们请求192.168.11.136:80/的时候,进入这里server,而后location进行资源分配 proxy_pass http://192.168.11.229; #就是间接的访问了 192.168.11.229:80/ } }
思路介绍:
nginx.conf>http>定义一个负载均价池
upstream myserver { server 192.168.11.229; server 192.168.11.xx; }
nginx.conf>http>经过反向代理转发
server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { #反向代理参数,当咱们请求192.168.11.136:80/的时候,进入这里server,而后location进行资源分配 proxy_pass myserver; #就是间接的访问了 192.168.11.229:80/ } }
配置nginx负载均衡:
环境准备,三台服务器
三台机器都是经过nginx实现的
192.168.11.136 反向代理服务器 192.168.11.229 资源服务器1 这个机器是返回的dnf页面 192.168.11.176 资源服务器2 这个配置的是 index.html 来了老弟
1.配置反向代理服务器 192.168.11.136
修改nginx.conf以下参数 定义负载均衡池 upstream s17server { server 192.168.11.229; server 192.168.11.176; } #转发请求给负载均衡池 location / { proxy_pass http://s17server; }
2.此时经过负载均衡器 192.168.11.136,进行访问测试,默认是轮询机制
3.upstream分配策略
weight 权重
upstream django { server 10.0.0.10:8000 weight=5; server 10.0.0.11:9000 weight=10;#这个节点访问比率是大于8000的 }
ip_hash
每一个请求按访问ip的hash结果分配,这样每一个访客固定访问一个后端服务器 upstream django { ip_hash; server 10.0.0.10:8000; server 10.0.0.11:9000; }
backup
在非backup机器繁忙或者宕机时,请求backup机器,所以机器默认压力最小 upstream django { server 10.0.0.10:8000 weight=5; server 10.0.0.11:9000; server node.oldboy.com:8080 backup; }